例子:
interface S {}
interface SS extends S {}
abstract class A<T extends S> {
T get() {…}
}
abstract class B<BT extends SS> extends A<BT> {}
当编译器可以确定返回的对象至少是 type 时,为什么((B)someInstanceOfB).get()
返回一个类型的对象S
(我们应该手动将其转换为) ?SS
SS
为什么编译器不进行隐式类强制转换以获得更清晰的代码?代码是 1.5+ 版本,这对编译器来说不是秘密。(解决了)
更新:为什么编译器不编译B
类,因为它隐含地有方法BT get() { return super.get(); }
?
这个问题在 Java 1.7+ 中解决了吗?