में विशिष्ट विधि को लागू करने के लिए टाइप पैरामीटर को मजबूर करना equals
विधि को लागू करने के लिए जावा जेनरिक में टाइप पैरामीटर को बल देने का कोई तरीका है? उदाहरण के लिए, मैंने इस वर्ग को लिखा: public class Bag<Item> implements Iterable<Item>
जिसमें contains
विधि है, जो Item.equals
विधि का उपयोग करती है। तो मैं यह सुनिश्चित करना चाहता हूं कि जेनेरिक में उत्तीर्ण वस्तु equals
विधि को भी कार्यान्वित करेगी।जावा जेनेरिक
उत्तर
आप ItemBase
नामक एक सार आधार वर्ग बना सकते हैं, बराबर सार बनाते हैं और फिर Item extend ItemBase
बनाते हैं।
public abstract class ItemBase {
@Override
public abstract boolean equals(Object o);
}
public class Bag extends ItemBase
यह लागू करने ItemBase विशेष रूप से लागू करने के लिए किसी को भी मजबूर होना पड़ा बराबर होती है
जानना अच्छा लगेगा कि जावा इसे क्यों अनुमति देता है। मेरे लिए, यह बहुरूपता का एक बहुत बड़ा उल्लंघन है और कम से कम आश्चर्य के सिद्धांत का उल्लंघन करता है (यह इंटरफेस से इतना अलग क्यों है?) –
मेरे अपने प्रश्न का उत्तर देने के लिए, यह स्पष्ट रूप से जेएलएस (* "एक उदाहरण विधि है जो नहीं है सार को एक अमूर्त विधि द्वारा ओवरराइड किया जा सकता है। "*), और कुछ उदाहरण देता है: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#d5e10777। हालांकि मैं अभी भी मूल्य पर सवाल करता हूं। –
हमने आज कुछ सीखा। – allprog
- 1. जावा जेनेरिक
- 2. जावा जेनेरिक
- 3. जावा जेनेरिक
- 4. जावा जेनेरिक
- 5. जेनेरिक कक्षाओं में जावा जेनेरिक विधियां
- 6. जावा जेनेरिक प्रकार चर
- 7. स्काला, जेनेरिक जावा विधि
- 8. जावा जेनेरिक प्रकार मिटा
- 9. जावा जेनेरिक विरासत चेतावनी
- 10. जावा- नए जेनेरिक सेट
- 11. जावा जेनेरिक प्रकार तर्क
- 12. ट्रू जावा जेनेरिक (टेम्पलेट्स)
- 13. जावा डुप्लिकेट जेनेरिक परिभाषा
- 14. जावा जेनेरिक वर्ग - प्रकार
- 15. जावा जेनेरिक विधि सीमाएं
- 16. जावा जेनेरिक प्रकार
- 17. जावा जेनेरिक पास पैरामीटर
- 18. जावा जेनेरिक बग?
- 19. जावा जेनेरिक प्रकार
- 20. कुछ खराब जावा जेनेरिक
- 21. जावा जेनेरिक फ़ील्ड
- 22. जावा जेनेरिक इंटरफेस प्रदर्शन
- 23. जावा जेनेरिक बिल्डर
- 24. लागू जावा जेनेरिक तरीके
- 25. जावा - जेनेरिक स्टेटिक तरीके
- 26. जेनेरिक अराजकता जावा
- 27. जावा जेनेरिक विधि घोषणा
- 28. जावा जेनेरिक कन्स्ट्रक्टर
- 29. जेनेरिक जावा क्लास
- 30. जावा में जेनेरिक साबुन क्लाइंट
उत्तीर्ण होने के एक ** इंटरफ़ेस ** वर्ग बनाने के लिए चाहते हैं और उस प्रकार पैरामीटर के रूप में। –
सभी ऑब्जेक्ट पहले ही 'बराबर() 'लागू करते हैं। – kiheru
मुझे लगता है कि आप का मतलब है कि पारित वस्तुओं को 'बराबर' ओवरराइड करने के लिए मजबूर होना चाहिए, लेकिन यह ... अच्छा, अजीब है। – GGrec