이것은 문제가되는 코드의 단순화 된 버전입니다. 한 제네릭 클래스는 제네릭 유형 매개 변수가있는 다른 클래스를 사용하고 제네릭 유형 중 하나를 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);
}
}
이 경고가 발생하지 않고 일반 매개 변수를 varargs 메서드에 전달하는 올바른 방법이 있습니까?
물론
assembler.assemble("hello", new T[] { something });
일반 배열을 만들 수 없기 때문에 작동하지 않습니다.