ジェネリッククラスのリストを作成:私はいくつかのオブジェクトのうちの1要素のリストを作成するユーティリティメソッドを持つ
public static final <T> List<T> list(T t) {
final List<T> rv = new ArrayList<>();
rv.add(t);
return rv;
}
は私もタイプList<Class<?>>
の引数を受け取るメソッドを持っています。だから、私はそのタイプのオブジェクトを作成する必要があります。ここで私は何をしようとしています:
final Class<?> aClass = Integer.class;
final List<Class<?>> trivialListOfClasses = list(aClass);
&hellip;これで失敗します:
[javac] /some/path/Foo.java:41: error: incompatible types
[javac] final List<Class<?>> trivialListOfClasses = list(aClass);
[javac] ^
[javac] required: List<Class<?>>
[javac] found: List<Class<CAP#1>>
[javac] where CAP#1 is a fresh type-variable:
[javac] CAP#1 extends Object from capture of ?
[javac] 1 error
上記を達成するための適切な方法は何ですか?私は、Javaジェネリックが不変であることについては理解していますが、ここでは何が起こっていますか?
なぜあなたは独自のバージョンのCollections.singletonList()を作成しましたか? – Kayaman
解決策はあなたのJavaバージョンを更新することです、これは '1.8.0_144'でうまく動作します。 –
私は 'Collections.singletonList(aClass)'とその前に 'Arrays.asList'を試みました。彼らはまだ同じエラーを出します。私は何が起こっているのか理解したかった。 –