2010-09-20 76 views

回答

11

一般來說,這確實是爲了保持向後兼容性。請注意,兼容性也必須保持在字節碼級別,並且更改返回類型會更改字節碼。因此,一般來說,如果有任何可能覆蓋相關方法的子類,切換到協變返回類型將會破壞這些類。

由於Graphics2D是抽象的,它顯然意味着被分類,所以上述推理適用。

Java Generics and Collections,儘管更多地關注泛型的觀點,但在8.4節中討論了協變覆蓋。

4

這會破壞二進制兼容性。先前編譯的類無法找到具有新返回類型的方法。 JLS3§13.4.15,§13.4.12

相關問題