What's the difference between these two code snippets?
Snippet 1:
Object o = new Object();
int i = Objects.hashCode(o);
Snippet 2:
Object o = new Object();
int i = o.hashCode();
The only difference is that if o is null, Objects.hashCode(o) returns 0 whereas o.hashCode() would throw a NullPointerException.
null objects, they're just the same?Objects.hashCode(o) has an additional logic to determine if o is null. If you're sure o is not null, it is marginally (negligibly) better to use o.hashCode().This is how Objects.hashCode() is implemented:
public static int hashCode(Object o) {
return o != null ? o.hashCode() : 0;
}
If o is null then Objects.hashCode(o); will return 0, whereas o.hashCode() will throw a NullPointerException.
Object o = new Object();
int i = Objects.hashCode(o);
It returns the hash code of a not-null argument and 0 for
null argument. This case it is Object referred by o.It doesn't throw NullPointerException.
Object o = new Object();
int i = o.hashCode();
Returns the hashCode() of Object referred by o. If o is null , then you will get a NullPointerException.
java.util.Objectssince 1.7.