में पैरामीटरेटेड विधियां मेरे पास एक आसान सवाल है। हालांकि मुझे खोज करके कोई जवाब नहीं मिल रहा है।जेनेरिक क्लास प्रकार
क्या इन दो कोड-टुकड़ों में कोई अंतर है? और क्या अंतर है?
Fragment1:
public class BinaryTree<T extends Comparable<? super T>> {
...
public <E extends T> void add(E value) {
...
}
public <E extends T> void add(E value, Node node) {
...
}
...
}
Fragment2:
public class BinaryTree<T extends Comparable<? super T>> {
...
public void add(T value) {
...
}
public void add(T value, Node node) {
...
}
...
}
Fragment1 स्पष्ट रूप से निर्दिष्ट करता है, उस पैरामीटर मूल्य प्रकार टी या प्रकार टी की एक उप-प्रकार के दोनों होना चाहिए।
Fragment2 निर्दिष्ट करता है, उस पैरामीटर मूल्य प्रकार टी का होना चाहिए। लेकिन मेरे छोटे ज्ञान और अनुभव से मुझे लगता है कि मैं टी का उप-प्रकार भी प्रदान कर सकता हूं। खंड 1 के समान ही।
मैंने इन दो टुकड़ों के अलग-अलग बाइट कोडों को देखा।
< public <E extends T> void add(E);
---
> public void add(T);
कि सिर्फ स्रोत कोड को दर्शाता है ...
मैं सिर्फ अर्थ नहीं मिलता है: वास्तव में वहाँ एक अंतर है। और मुझे एक उदाहरण एप्लिकेशन भी नहीं मिल रहा है, जो अंतर दिखाता है।
टिप्पणियों के लिए धन्यवाद।
ये टुकड़े कहाँ से आए थे? क्या यह होमवर्क/coursework है? – Bobulous
टुकड़े एक किताब बनाते हैं। लेखक खंड 2 से खंड 1 तक जाने के द्वारा कक्षा में सुधार करने का दावा कर रहा है। मैं उनकी व्याख्याओं का पुनर्निर्माण करने में सक्षम नहीं था। – Bridy