在一些SuperClass
我有一个抽象的通用方法:
protected abstract <T extends Foo> T getFoo();
在我的SubClass
我尝试覆盖它:
@Override
protected SubFoo getFoo() {
return new SubFoo();
}
在哪里public class SubFoo extends Foo
在我的子类中,getFoo
我收到以下错误。
“类型安全:来自 SubClass 类型的 getFoo() 的返回类型 SubFoo 需要未经检查的转换以符合来自 SuperClass 类型的 T”
我的问题是:
1)有没有不安全的情况?
2)如果不是,编译器不应该能够弄清楚吗?是什么阻止编译器在编译时确定 SubFoo 是 Foo 的子类?
3)有没有办法实现这样的目标,但没有警告?