2012-05-24 12 views
6

क्या कोई यह समझा सकता है कि यह दोनों कैसे संकलित हो सकते हैं और यह कैसे काम करता है?जावा जेनरिक में, सूची <क्या करती है? सुपर स्ट्रिंग> मतलब है?

List<? super String> list = new ArrayList<Object>(); 

जैसा कि मैंने यह समझा, इस के कार्यान्वयन या तो एक स्ट्रिंग सूची या वस्तुओं स्ट्रिंग सुपर वर्ग के रूप में है कि की एक सूची होने की जरूरत है? क्या मुझे कुछ याद आया है?

+0

बीटीडब्ल्यू - स्ट्रिंग क्लास अंतिम है और कोई वर्ग इसे विस्तारित नहीं करता है। – MByD

+0

हाँ मुझे पता है, केवल एक मामला जो जावा प्रमाण परीक्षण परीक्षा के लिए आया था =) – Marthin

उत्तर

20

नहीं (यानी हाँ, आपने कुछ याद किया है :-)। <? super String> कोई भी वर्ग है जो सुपरक्लासString (String स्वयं सहित) है। (इस मामले में, केवल अन्य उपयुक्त वर्ग Object है।)

क्या आप <? extends String> होगा वर्णित (जो इस विशिष्ट मामले में बहुत उपयोगी नहीं होगा के रूप में Stringfinal है, इसलिए यह कोई उपवर्गों हो सकते हैं)।

3

<? super String>String और सुपरक्लास स्वीकार करता है।

<? extends String>String स्वीकार करता है और किसी भी उपवर्ग (जिनमें से वहाँ String बाद से किसी भी नहीं कर रहे हैं final है):

नहीं साथ भ्रमित होने की।

0

Stringfinal है, यह किसी भी अन्य वर्ग की सुपर क्लास नहीं हो सकता है। List<? super String> का अर्थ है किसी भी प्रकार जो String की एक सुपर क्लास है। वास्तव में, ObjectString (वास्तव में किसी भी वर्ग का) का एक सुपर क्लास है।

संबंधित मुद्दे