いずれかのコンパレータのインターフェースが定義されて、Javadocの中だけでなく、コード自体:java.util.Comparatorで実装するためにequalsが必須ではないのはなぜですか?
int compare(T o1, T o2);
boolean equals(Object obj);
しかし、これはcompilating何ちゃったごめんなさいを与えない:
Comparator a = new Comparator() {
@Override public int compare(Object o1, Object o2) {
//..
}
};
しかし、この処理が行われます。
どうComparator a = new Comparator() {
@Override public boolean equals(Object comparator) {
//..
}
};
私たちがメソッドをオーバーライドできないようにするためのインターフェイスのために行われた?あなたは、このメソッドを実装しなければならない明確全てJavaDocs explainの
私は2番目の部分を読んでいましたが、通常の新しいインスタンスのようにオブジェクトを拡張しているインターアートですか?それとも、どのようなメソッドがすでにどのオブジェクトに実装されている可能性があるので、インターフェイスがそれを強制しないことをインターフェイスが認識しているということですか? – Whimusical
@ user1352530実際には、インタフェースは 'Object'を意識していません。しかし、あなたがインターフェースを実装しているとき、あなたは常に 'Object'から直接的または間接的に継承します。つまり、 'equals()'やその他のものを既に継承しているので、コンパイラは不平を言っていません。一方、あるインタフェースのインスタンスがあるときは、その特定のインタフェースのメソッドではなく、 'Object'メソッドを呼び出すことができます。 –
ニースの答え、便利です! – Whimusical