2010-09-20 4 views

Répondre

11

En général, c'est en effet pour maintenir la compatibilité ascendante. Notez que la compatibilité doit également être conservée au niveau du bytecode, et la modification du type de retour modifie le bytecode. Donc, en général, s'il y a des sous-classes qui peuvent avoir surchargé la méthode en question, passer à un type de retour covariant casserait ces classes.

Puisque Graphics2D est abstrait, il est évidemment destiné à être sous-classé, donc le raisonnement ci-dessus s'applique.

Java Generics and Collections, bien que se concentre plus sur le point de vue des génériques, contient une discussion sur le remplacement des covariants dans la section 8.4.

4

Cela romprait la compatibilité binaire. Les classes précédemment compilées ne peuvent pas trouver la méthode avec le nouveau type de retour. JLS3 §13.4.15, §13.4.12

Questions connexes