在Android Studio中,我有以下錯誤: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的玩笑。 –