鉴于下面的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
}
}
答案 0 :(得分:0)
有两个问题,
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;
}
}