通常,这确实是为了保持向后兼容性。请注意,兼容性也必须保持在字节码级别,并且更改返回类型也会更改字节码。因此,通常来说,如果有任何子类可能覆盖了所讨论的方法,那么切换到协变返回类型将破坏这些类。
由于
Graphics2D是抽象的,因此显然要进行子类化,因此适用上述推理。
Java Generics and
Collections尽管更着重于泛型观点,但在8.4节中讨论了协变量重写。

通常,这确实是为了保持向后兼容性。请注意,兼容性也必须保持在字节码级别,并且更改返回类型也会更改字节码。因此,通常来说,如果有任何子类可能覆盖了所讨论的方法,那么切换到协变返回类型将破坏这些类。
由于
Graphics2D是抽象的,因此显然要进行子类化,因此适用上述推理。
Java Generics and
Collections尽管更着重于泛型观点,但在8.4节中讨论了协变量重写。