ええと、View
は、TView
を拡張しません。つまり、View
のインスタンスはTView
のインスタンスではない可能性があります。
はView
を想像して、あなたがSomeClass<ViewA>
を作成し、new SomeClass<ViewA>((View)new ViewB())
を呼び出した場合ViewA extends View
とViewB extends View
あなたはいくつかの問題を引き起こす可能性があります。例えば、以下の試験は、上記のコンパイルプットがClassCastException
のために失敗しますラインViewA oa = o.getT();
class View{}
class ViewA{}
class ViewB{}
class Other<T extends View>{
T t;
Other(View view){
t= (T)view;
}
T getT(){
return T;
}
}
@Test
public void testIt(){
ViewA a = new ViewA();
ViewB b = new ViewB();
Other<ViewA> o = new Other<ViewA>((View)b);
ViewA oa = o.getT();
}
でClassCastException
がスローされます。
新しい何かを毎日新しいことを学びます。 –