2011-06-18 22 views
0

,我读了我的书,这样的代码:的Java:通用类

class B extends A {...} 
class G<E> { 
public E e; 
} 
G<B> gb = new G<B>(); 
G<A> ga = gb; 
ga.e = new A(); 
B b = gb.e; // Error 

为什么B b = gb.e;出现错误?我们没有分配任何东西给b,因为那个gb.e来自类型B.

+0

你确定错误只出现在行B b = gb.e;'?而不是在'G ga = gb;'? –

+0

恐怕,这根本就不是[至少对我而言](http://www.ideone的.com/6gREv)。随意发布代码可以在同一行中重现相同的错误。在我看来,和Eclipse编译器javac和ideone一样,由于使用了严格的打字检查,'G ga = gb;'这行应该出错。 –

回答