例子:误区类返回实例从Java中的子类的实例称为类的通用方法
interface S {}
interface SS extends S {}
abstract class A<T extends S> {
T get() {…}
}
abstract class B<BT extends SS> extends A<BT> {}
为什么((B)someInstanceOfB).get()
返回S
类型的对象(我们应该把它转换为手动SS
)时,编译器可以确定返回的对象至少是SS
?
编译器为什么不让隐式类转换为更清晰的代码?代码版本为1.5+,这对编译器来说不是秘密。 (解决)
更新:为什么不编译器来编译B
类,因为它隐含有方法BT get() { return super.get(); }
?
这个问题在Java 1.7+中解决了吗?
我不明白这个问题。但'S'和'SS'是这里的接口。 – midhunhk
@silverback修改后的问题。接口有什么问题? –