Objects.hashCode()和new Object()之间的区别.hashCode()?

时间:2013-04-24 08:46:57

标签: java java-7 hashcode

这两个代码段之间有什么区别?

摘录1:

Object o = new Object();
int i = Objects.hashCode(o);

摘录2:

Object o = new Object();
int i = o.hashCode();

4 个答案:

答案 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;
}

如果onull,则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()。如果onull,那么您将获得NullPointerException