鉴于下面的 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
}
}