करता प्रभावी जावा द्वितीय संस्करण, मद 28 से: "वापसी प्रकार के रूप में वाइल्डकार्ड प्रकार का प्रयोग न करें के बजाय अपने उपयोगकर्ताओं के लिए यह उन्हें मजबूर होना पड़ा के लिए अतिरिक्त लचीलापन प्रदान करते हैं। क्लाइंट कोड में वाइल्डकार्ड प्रकारों का उपयोग करने के लिए। "क्यों अमरूद के TypeToken <T> .getRawType() वापसी कक्षा <? super T> बजाय कक्षा <T>
public final Class<? super T> getRawType()
मैं अभी पिछले अनियंत्रित डाली चेतावनी मैं कोड मैं लिख रहा हूँ के एक टुकड़े में है समझने के लिए सामान्य वाइल्डकार्ड के साथ पकड़ के लिए हो रही किया गया है और मुझे समझ नहीं आता क्यों getRawType() एक वाइल्डकार्ड प्रकार देता है।
class Base<T>{}
class Child<T> extends Base<T>{}
public <C> void test (TypeToken<? extends Base<C>> token) {
Class<? extends Base<C>> rawType = (Class<? extends Base<C>>) token.getRawType();
}
मैं के रूप में यह रिटर्न एक
Class<? super ? extends Base<C>>
धन्यवाद @ न्यूवाक्ट, यह बात है मुझे समझ में नहीं आया, लेकिन यह समझ में आता है कि ArrayList ऐरेलिस्ट को बढ़ाता है। कक्षा super T> यह लौट रहा है कि यह क्या लौट रहा है, हालांकि क्लाइंट कोड का सवाल है, यह कक्षा > पर भी लौटा सकता है, क्योंकि आपको हमेशा इसे डालना होगा। –
MikeB