在那里,我虽然理解了Java泛型,但在我尝试编写以下代码之前:
class A{}
class B{
A a;
<T extends A> T getA(){
return a; // does not compile
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个编译错误,说类型不兼容:需要T,找到A.
谢谢!
Jon*_*eet 10
如果编译,它将不是类型安全的:
B b = new B();
b.a = new A();
SubclassOfA foo = b.<SubclassOfA>getA();
Run Code Online (Sandbox Code Playgroud)
编译器不能保证a它将是一个实例T,并且由于类型擦除它甚至无法在执行时检查它 - 所以它不会编译.
一般来说,Java Generics FAQ几乎涵盖了所有内容.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |