無論是在的Javadoc以及代碼本身,比較接口定義:爲什麼equals不是強制在java.util.Comparator中實現的?
int compare(T o1, T o2);
boolean equals(Object obj);
但後來這給沒有probs compilating:
Comparator a = new Comparator() {
@Override public int compare(Object o1, Object o2) {
//..
}
};
但這:
Comparator a = new Comparator() {
@Override public boolean equals(Object comparator) {
//..
}
};
如何它的界面允許我們不要重寫方法嗎?
我已經讀過第二部分,但我的意思是,是一個interace擴展對象就像一個正常的newable實例呢?或者你的意思是一個接口意識到什麼方法可以在任何對象中實現,因此它不會強制它們? – Whimusical 2012-08-01 11:28:49
@ user1352530其實也沒有。接口不知道「對象」。但是當你實現一個接口時,你總是直接或間接地從'Object'繼承。這意味着你已經繼承了'equals()'等,所以編譯器不會抱怨。另一方面請注意,當你有任何接口的實例時,你仍然可以調用它的任何'Object'方法,而不是那個特定接口的方法。 – 2012-08-01 11:31:12
很好的答案,很有用! – Whimusical 2012-08-01 16:04:05