Параметр вложенного типа Java Upcasting
Учитывая код Java ниже, я хочу знать, почему апкастинг Foo<String>
в Foo<object>
не работает? По сути, я хочу сказать Java, что если T
это подкласс S
, затем Foo<T>
это подкласс Foo<S>
, Я знаю, что есть способ сделать это в Scala, но есть ли способ сделать это в Java? Если нет, есть ли обходной путь, чтобы получить приведенный ниже код для компиляции?
class Foo<T> {
T t;
public Foo(T t) {
this.t = t;
}
}
class Main {
public static Foo<object> getFoo() {
Foo<String> foo = new Foo("foo");
return foo; // this throws a compile time exception
}
}
1 ответ
Есть две проблемы,
Foo(T obj) {
Foo<Object> foo....
Приведенный ниже код работает нормально.
class Foo<T> {
T obj;
Foo(T obj) {
this.obj = obj;
}
}
class Main {
public static Foo<Object> getFoo() {
Foo<Object> foo = new Foo("foo");
return foo;
}
}