जेनिक्स के बारे में जावा आधिकारिक ट्यूटोरियल पढ़ने के दौरान, मैंने पाया कि आप 'और' ऑपरेटर (&
) के साथ कक्षा और/या अधिक इंटरफेस का विस्तार करने के लिए प्रकार तर्क (इस मामले में T
) को प्रतिबंधित कर सकते हैं:जावा जेनेरिक में '&' और ',' के बीच क्या अंतर है?
<T extends MyClass & Serializable>
मैंने &
को ,
के साथ बदल दिया (गलती से और अभी भी काम करता है, मामूली चेतावनी के साथ)।
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
और उदाहरण विधि:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
@ डोरोकनोब आप मानते हैं कि ओपी एक कीबोर्ड और उसी कीबोर्ड का उपयोग कर रहा है जिसका आप उपयोग कर रहे हैं। – emory
@emory मुझे लगता है कि यह भी गलत दिशा है - त्रुटि उसकी उंगलियों में नहीं बल्कि उसके दिमाग में थी। इसी प्रकार जैसे कि आप जावा स्रोत फ़ाइल में 'आयात' के बजाय 'शामिल' का उपयोग करने का प्रयास करेंगे। आपने 'शामिल' को गलत टाइप किया है, क्योंकि आपके दिमाग ने आपको गलत चीज़ टाइप करने के लिए कहा है, जो विभिन्न कारणों से संभव है। –
@ निकोलस पिकरिंग, सही है! मेरे लिए, यह कीबोर्ड की वजह से एक गलत टाइप नहीं था, लेकिन मस्तिष्क की वजह से। जब आप लिखते हैं कि कक्षा के कौन से इंटरफेस लागू होते हैं, तो आप उन्हें अल्पविराम से अलग करते हैं। –