私は理解できない愚かな問題で立ち往生しています。
class Foo<T extends Collection<E>, E> {
private Class<T> collectionClass;
private Class<E> elementClass;
public Foo(Class<T> collectionClass, Class<E> elementClass) {
this.collectionClass = collectionClass;
this.elementClass = elementClass;
}
}
これを実行しようとすると
Foo<Collection<String>, String> foo =
new Foo<Collection<String>, String>(
Collection.class,
String.class);
コンパイラエラーが発生します
java.lang.Error: Unresolved compilation problem:
The constructor Foo<Collection<String>,String>(Class<Collection>, Class<String>) is undefined
なんで ?ジェネリックを消去すれば大丈夫です
Foo foo =
new Foo(
Collection.class,
String.class);
誰かがアイデアを持っているなら、それは素晴らしいことであり、壁に頭をぶつけるのを止めてくれます。