我不確定任何人都會知道這個問題的答案,除非你負責編寫Jave API,但是當Java API說「等於」時,它是否意味着a.equals(b)
的計算結果爲true
,或者有時候會這樣意思是a == b
是true
?我最近擴展了一堂課,並想知道是否需要重寫一個方法,具體取決於使用的方法==
或.equals
。具體而言,我擴展了javafx.beans.binding.ObjectExpression,並對.isEqualTo(Object other)
方法感到好奇。我檢查了來源(here),發現此方法使用.equals
進行比較。我很好奇,如果我可以確信,當我看到像Java API中的「equals」是什麼意思?
「創建一個新的BooleanExpression,如果此ObjectExpression等於一個常量值,則爲true」。
該方法沒有使用==
運算符。雖然,我想起來了,該API不可能想.equals
,因爲相關(例如)
String constant = "constant";
ObjectExpress<String> stringExpression = new MyStringExpression("constant");
constant.equals(stringExpression)
將始終計算爲false。所以也許我的問題應該是「當API說'等於'時,它是否總是指最合理的方法來應用.equal
或者某個時候它是指類似的方式來應用==
?
編輯
我想根據我要澄清的答案:這是不是一個約==
和.equal
之間的差異問題。 Java API在使用英文單詞「equals」時將涉及哪些內容。
'=='總是比較引用。通常當我們說「等於」時,我們指的是內容,而不是參考。 – Maroun
好的API文檔不應該調用「==」「equal」,比較http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilder.html#weakKeys%28% 29 – zapl