Sia in Javadoc così come il codice stesso, l'interfaccia comparatore definisce:Perché equals non è obbligatorio da implementare in java.util.Comparator?
int compare(T o1, T o2);
boolean equals(Object obj);
Ma allora questo dà nessuna eccessiva compilating:
Comparator a = new Comparator() {
@Override public int compare(Object o1, Object o2) {
//..
}
};
ma questo:
Comparator a = new Comparator() {
@Override public boolean equals(Object comparator) {
//..
}
};
Come è fatto per l'interfaccia per permetterci di non sovrascrivere il metodo?
Avevo letto la seconda parte, ma voglio dire, è un interaccia che estende anche l'oggetto come una normale istanza di nuova ora? O vuoi dire che un'interfaccia è a conoscenza di quali metodi potrebbero essere già implementati in qualsiasi oggetto, quindi non li forza? – Whimusical
@ user1352530 in realtà, nessuno dei due. L'interfaccia non è a conoscenza di 'Object'. Ma quando si implementa un'interfaccia, si eredita sempre, direttamente o indirettamente, da 'Object'. Questo significa che hai già ereditato 'equals()' e altri, quindi il compilatore non si lamenta. D'altra parte si noti che quando si ha un'istanza di qualsiasi interfaccia, è comunque possibile chiamare qualsiasi metodo 'Object' su di esso, non a malapena i metodi di quella particolare interfaccia. –
Bella risposta, utile! – Whimusical