私は次のようなエラーがあります。Javaのジェネリック型の継承エラー
java: incompatible types: java.lang.Object cannot be converted to java.lang.String
を私はB1と思うとB2は同じ行動をしなければならないが、そうではありません。
(コースの種類を変更せずに)同じように動作させる方法はありますか?ここで
はコード型付けです:
public class Test
{
class A<T>
{
T t;
T getT()
{
return t;
}
}
class AS extends A<String>
{
}
class B<T> extends AS
{
}
B<Object> b1;
B b2;
public void test()
{
String t3 = b1.getT();
String t4 = b2.getT();
}
}
コードをコピーして貼り付けることができますので、私の回答のコードサンプルを取得できますか? –
私は自分の答えを編集したので、コードはコピー可能です。 :) –
修正、 'javac'で再現できますが、' eclipsec'では再現できません。しかし、ロジックは同じままです。あなたは消去されたバージョンの 'B'を使います。消去されたバージョンの' A'を使うので、[JLS](https://docs.oracle.com/javase/specs/jls/se7/html/jls)に従ってオブジェクトを返します。 -4.html#jls-4.8)。結局、これはhttp://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-itの欺瞞です。 –