जेनरिक के बारे में जावा आधिकारिक ट्यूटोरियल को पढ़ते हुए, मैंने पाया कि आप इस तरह 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;
}
5
@Doorknob आप मान रहे हैं कि ओपी एक कीबोर्ड और उसी कीबोर्ड का उपयोग कर रहा है जो आप उपयोग कर रहे हैं।
—
एमोरी
@ मेरा मानना है कि यह भी गलत दिशा है - त्रुटि उनकी उंगलियों में नहीं बल्कि उनके मस्तिष्क में थी। इसी तरह जैसे कि आपने जावा स्रोत फ़ाइल में 'आयात' के बजाय 'शामिल' का उपयोग करने का प्रयास किया है। आपने 'शामिल' को गलत माना, क्योंकि आपके मस्तिष्क ने आपको गलत चीज़ टाइप करने के लिए कहा था, जो विभिन्न कारणों से संभव है।
—
निक पिकरिंग
@ निकोलस पिकरिंग, सही है! मेरे लिए, यह कीबोर्ड के कारण गलत नहीं था, बल्कि मस्तिष्क के कारण था। जब आप लिखते हैं कि कौन सी कक्षा के क्रियान्वयन में बाधा डालती है, तो आप उन्हें अल्पविराम द्वारा अलग करते हैं।
—
एलिन सियोकेन