[英]Java String hashCode of null string
唯一有趣的是,為什么java.lang.String中的方法hashCode()不是靜態的? 如果返回null,例如-1? 因為經常需要做一些像:
String s;
.............
if (s==null) {
return 0;}
else {
return s.hashCode();
}
謝謝。
正如其他人所說, hashCode
是Object
上的一個方法,並且是非靜態的,因為它本身就依賴(即屬於)一個對象/實例。
請注意,Java 7引入了Objects
類,它具有hashCode(Object)
方法,它完全符合您的要求:如果o
為非null,則返回o.hashCode()
否則返回0
。
這個類也有與possibly-處理等方法null
值,如equals(Object, Object)
, toString(Object)
和其他幾個人。
因為如果它是靜態的"1".hashCode()
和"2".hashCode()
會返回相同的值,這顯然是錯誤的。
它是特定的每個實例,並受其影響,因此它不能是靜態的。
因為String的哈希碼是該String的屬性。
通過相同的思路,您可以使每個方法都是靜態的。
hashCode
用於獲取對象的hashCode,以便知道必須在該HashMap
哪個桶中放置該對象。 因此它必須是對象的實例方法,並且必須以多態方式調用它。
null
可以用作HashMap中的鍵,但它被視為一種特殊情況。
您似乎將hashCode用於其他目的,因此您必須以特定方式處理。
它返回的Object
hashCode不是一個類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.