Foo<String>
以下の Java コードを考えると、アップキャストがFoo<object>
機能しない理由を知りたいですか? 基本的に、Java に が のサブクラスである場合、はT
のサブクラスであることを伝えたいと思います。Scalaでこれを行う方法があることは知っていますが、Javaでこれを行う方法はありますか? そうでない場合、以下のコードをコンパイルするための回避策はありますか?S
Foo<T>
Foo<S>
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
}
}