Questa è una versione semplificata del codice in questione, una classe generica utilizza un'altra classe con parametri di tipo generico e deve passare uno dei tipi generici a un metodo con parametri varargs:
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);
}
}
Esiste un modo corretto per passare il parametro generico a un metodo varargs senza incontrare questo avviso?
Certo qualcosa del genere
assembler.assemble("hello", new T[] { something });
non funziona poiché non è possibile creare matrici generiche.