2010-09-20 9 views

Respuesta

11

En general, esto es para mantener la compatibilidad con versiones anteriores. Tenga en cuenta que la compatibilidad debe mantenerse en el nivel de bytecode también, y cambiar el tipo de devolución cambia el bytecode. Entonces, en general, si hay subclases que pueden haber anulado el método en cuestión, cambiar a un tipo de retorno covariante rompería esas clases.

Dado que Graphics2D es abstracto, obviamente está destinado a ser subclasificado, por lo que se aplica el razonamiento anterior.

Java Generics and Collections, aunque se centra más en el punto de vista de los genéricos, contiene una discusión sobre anulación covariante en la sección 8.4.

4

Eso rompería la compatibilidad binaria. Las clases compiladas previamente no pueden encontrar el método con el nuevo tipo de devolución. JLS3 §13.4.15, §13.4.12

Cuestiones relacionadas