Đây là một phiên bản đơn giản của mã đang được đề cập, một lớp chung sử dụng một lớp khác với các tham số kiểu chung và cần truyền một trong các kiểu chung cho một phương thức có tham số 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);
}
}
Có cách nào chính xác để chuyển dọc theo tham số chung cho phương thức varargs mà không gặp phải cảnh báo này không?
Tất nhiên một cái gì đó như
assembler.assemble("hello", new T[] { something });
không hoạt động vì bạn không thể tạo mảng chung.