[英]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.