【发布时间】:2014-02-03 18:37:33
【问题描述】:
根据来自此post 的评论,null objects 的hascode 可以throw NPE 或zero 的值。这是特定于实现的。但在同一个实现中,为什么
Objects.hashcode 和 hascode(instance) 返回不同的值。例如:
public class EqualsTesting {
public static void main(String[] args){
String p1 =null;
String p2 = null;
System.out.println(Objects.hashCode(p1));
System.out.println(p2.hashCode());
}
}
输出:
0
Exception in thread "main" java.lang.NullPointerException
at BinaryTrees.EqualsTesting.main(EqualsTesting.java:14)
如果是这种情况,这不会影响HashMap 中的key look-up,其中null Key-value pairs 是允许的。 (可能是hash 到bucket 0 或throw a NPE)
【问题讨论】:
-
因为第一个是静态方法,第二个是非静态
-
@tintinmj:那他们为什么要返回不同的值呢?
-
你不能在
null上调用hashCode()或任何其他方法。 -
您不能调用
null引用的任何实例方法。这并不特定于hashCode()方法。 -
“根据这篇文章的评论...” - 我建议您不要尝试过多地阅读单行评论。阅读真正的答案。
标签: java object hashmap hashcode