मैं एक अंतरफलक A
T
A<T>
द्वारा parameterised करना चाहते हैं, और यह भी कि हर वर्ग को लागू करता है कि यह भी लागू करने के लिए Comparable
(T
और उसके उप-प्रकारों के साथ) चाहते हैं। यह interface A<T> extends Comparable<? extends T>
लिखना स्वाभाविक प्रतीत होता है, लेकिन यह काम नहीं करता है। तब मुझे यह कैसे करना चाहिए?जावा इंटरफ़ेस फैली तुलनीय
उत्तर
जब Comparable<? extends T>
इसका मतलब है कि आपको लगता है कि एक (अज्ञात) T
की उप-प्रकार, कि यह टी
किसी भी उप-प्रकार की तुलना में किया जा सकता है नहीं की तुलना में किया जा सकता है Comparable
का एक उदाहरण है लेकिन आप डॉन 'दिखाई देता है टी की आवश्यकता नहीं है, क्योंकि Comparable<T>
किसी भी तरह से T
के किसी उपप्रकार से तुलना कर सकता है, उदाहरण के लिए Comparable<Number>
खुद को Comparable<Double>
से तुलना कर सकता है।
तो कोशिश:
interface A<T> extends Comparable<T> {
// ...
}
या
interface A<T extends Comparable<T>> extends Comparable<A<T>> {
// ...
}
कि क्या आप के लिए अपने compareTo
विधि को लागू करने में T
के उदाहरण तुलना करने में सक्षम होने की जरूरत है पर निर्भर करता है।
यह एक शानदार जवाब है! मैं यहां http://stackoverflow.com/questions/6290406/generic-method-to-sort-a-map-on-values से आया था। मेरी समस्या हल –
यदि आप तुलनीय उपयोग करते हैं तो आपको तुलनात्मक कार्य में उपप्रकारों की संभावना निर्दिष्ट करने की आवश्यकता नहीं है, यह किसी ऑब्जेक्ट एक्स के किसी उप-प्रकार में कक्षा X के पैरामीटर घोषित करने के लिए प्रकृति संभव है। अधिक जानकारी के लिए नीचे कोड।
public interface Test<T> extends Comparable<T> {
}
class TestImpl implements Test<Number> {
@Override
public int compareTo(final Number other) {
return other.intValue() - 128;
}
}
class TestMain {
public static void main(final String[] args) {
TestImpl testImpl = new TestImpl();
testImpl.compareTo(Integer.MIN_VALUE);
}
}
- 1. Enum <? फैली इंटरफ़ेस>
- 2. इंटरफ़ेस अन्य इंटरफेस फैली लेकिन इसकी तरीकों
- 3. जावा: तुलनीय तुलनाकारी बनाम
- 4. जावा जेनेरिक्स और इन्फिनिटी (तुलनीय)
- 5. जावा इंटरफ़ेस विधि पर विधि कॉल करना क्यों संभव है? [तुलनीय]
- 6. जावा इंटरफ़ेस इनपुट तर्क एक आधार वर्ग
- 7. जावा उपयोगकर्ता इंटरफ़ेस फ्रेमवर्क?
- 8. जावा में IEqualityComparer इंटरफ़ेस
- 9. क्यों जावा इंटरफ़ेस
- 10. जावा सार वर्ग इंटरफ़ेस
- 11. जावा एपीआई इंटरफ़ेस
- 12. जावा सार इंटरफ़ेस
- 13. जावा डीबगर इंटरफ़ेस
- 14. covariant Typeparameter जावा इंटरफ़ेस
- 15. जावा ओआरएम: एकाधिक (इंटरफ़ेस) विरासत
- 16. जावा: इंटरफ़ेस और संग्रह इंटरफ़ेस अंतर सेट करें
- 17. एक वर्ग है कि जावा में अन्य वर्ग फैली
- 18. एक अंतरफलक है कि फैली IEnumerable
- 19. प्राप्त माता पिता फैली php
- 20. एक वर्ग फैली कि देखें
- 21. जावा: क्लोनेबल इंटरफ़ेस का तर्क
- 22. जावा में इंटरफ़ेस का ऐरे
- 23. जावा प्रतिबिंब: कार्यान्वित सामान्य इंटरफ़ेस
- 24. जावा कमांड लाइन इंटरफ़ेस: '\ r'
- 25. सूची इंटरफ़ेस: जावा से सी #
- 26. सी ++ निर्धारित करता है कि कक्षा तुलनीय है
- 27. इंटरफ़ेस
- 28. निजी निर्माता के साथ वर्ग की फैली
- 29. Django टेम्पलेट काम नहीं कर रहा फैली
- 30. जावा - इंटरफ़ेस, एक इंटरफेस को तत्काल?
मैं भी जावा जेनेरिक्स पूछे जाने वाले प्रश्न (http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#FAQ204) का उल्लेख होगा जो आप के बारे में 'Comparable' अधिक विचार दे देंगे। –