यह प्रश्न में कोड का एक सरलीकृत संस्करण है, एक सामान्य वर्ग जेनेरिक प्रकार के मापदंडों के साथ एक और वर्ग का उपयोग करता है और वैरिएग मापदंडों के साथ सामान्य प्रकार में से एक को पारित करने की आवश्यकता है:
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);
}
}
क्या इस चेतावनी का सामना किए बिना वैरिकाज़ पद्धति के सामान्य पैरामीटर के साथ गुजरने का कोई सही तरीका है?
जरूर कुछ पसंद है
assembler.assemble("hello", new T[] { something });
काम नहीं करता क्योंकि आप जेनेरिक सरणियाँ नहीं बना सकते।