В 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 # ПСБ-4.8). В конце концов, это обман http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it. –