这两个代码段之间有什么区别?
摘录1:
Object o = new Object();
int i = Objects.hashCode(o);
摘录2:
Object o = new Object();
int i = o.hashCode();
答案 0 :(得分:8)
唯一的区别是,如果o为空,Objects.hashCode(o)
返回0,而o.hashCode()
会抛出NullPointerException
。
答案 1 :(得分:4)
这就是Objects.hashCode()
的实施方式:
public static int hashCode(Object o) {
return o != null ? o.hashCode() : 0;
}
如果o
为null
,则Objects.hashCode(o);
将返回0
,而o.hashCode()
则会返回NullPointerException
。
答案 2 :(得分:2)
java.util.Objects {
public static int hashCode(Object o) {
return o != null ? o.hashCode() : 0;
}
}
这是o.hashCode()的NPE安全替代方案。
否则没有区别。
答案 3 :(得分:0)
Object o = new Object();
int i = Objects.hashCode(o);
它返回非null参数的哈希码,0表示
null参数。这种情况由Object
引用o
。它不会抛出NullPointerException
。
Object o = new Object();
int i = o.hashCode();
返回Object
引用的o
的hashCode()。如果o
为null
,那么您将获得NullPointerException
。