これは問題のコードの簡略化されたバージョンです。あるジェネリッククラスはジェネリック型パラメーターを持つ別のクラスを使用し、varargsパラメーターを持つメソッドにジェネリック型の1つを渡す必要があります。
class Assembler<X, Y> {
void assemble(X container, Y... args) { ... }
}
class Component<T> {
void useAssembler(T something) {
Assembler<String, T> assembler = new Assembler<String, T>();
//generates warning:
// Type safety : A generic array of T is
// created for a varargs parameter
assembler.assemble("hello", something);
}
}
この警告に遭遇することなく、ジェネリックパラメーターをvarargsメソッドに渡す正しい方法はありますか?
もちろんのようなもの
assembler.assemble("hello", new T[] { something });
汎用配列を作成できないため、機能しません。