या तो जावाडोक के साथ ही कोड अपने आप में, तुलनाकारी इंटरफेस को परिभाषित करता:java.util.comparator में लागू करने के लिए बराबर क्यों अनिवार्य नहीं है?
int compare(T o1, T o2);
boolean equals(Object obj);
लेकिन तब यह compilating नहीं probs देता है:
Comparator a = new Comparator() {
@Override public int compare(Object o1, Object o2) {
//..
}
};
लेकिन इस करता है:
Comparator a = new Comparator() {
@Override public boolean equals(Object comparator) {
//..
}
};
कैसे यह इंटरफ़ेस के लिए किया गया है ताकि हम विधि को ओवरराइड न करें?
मैंने दूसरे भाग को पढ़ा था, लेकिन मेरा मतलब है, क्या एक इंटरैस विस्तार भी सामान्य सामान्य उदाहरण की तरह ऑब्जेक्ट कर रहा है? या क्या आपका मतलब है कि एक इंटरफ़ेस इस बात से अवगत है कि किसी भी ऑब्जेक्ट में कौन से तरीकों को पहले से लागू किया जा सकता है, जिससे यह उन्हें मजबूर नहीं करता है? – Whimusical
@ user1352530 वास्तव में, न तो। इंटरफेस 'ऑब्जेक्ट' से अवगत नहीं है। लेकिन जब आप एक इंटरफ़ेस को कार्यान्वित कर रहे होते हैं, तो आप हमेशा 'ऑब्जेक्ट' से सीधे या परोक्ष रूप से उत्तराधिकारी होते हैं। इसका मतलब है कि आप पहले से ही 'बराबर()' और अन्य को विरासत में मिला है, इसलिए संकलक शिकायत नहीं कर रहा है। दूसरी तरफ ध्यान दें कि जब आपके पास किसी इंटरफ़ेस का उदाहरण होता है, तो आप उस पर किसी भी 'ऑब्जेक्ट' विधि को कॉल कर सकते हैं, न कि उस विशेष इंटरफ़ेस के मुश्किल तरीके से। –
अच्छा जवाब, उपयोगी! – Whimusical