Only interesting, why method hashCode() in java.lang.String is not static? And in case of null return e.g. -1 ? Because frequently need do somethihg like:
String s;
.............
if (s==null) {
return 0;}
else {
return s.hashCode();
}
Thanks.
Because the hash code of a String is a property of that String.
With the same train of thought you could make every method static.
hashCode
is used to get the hashCode of an object, in order to know in which bucket of aHashMap
this object must be placed. It thus has to be an instance method of the object, and it must be called polymorphically.null
can be used as a key in a HashMap, but it's treated as a special case.You seem to be using hashCode for a different purpose, so you have to handle is in a specific way.
Its returning hashCode of an
Object
not an class.As others have noted
hashCode
is a method onObject
and is non-static because it inherently relies (i.e. belongs to) an object/instance.Note that Java 7 introduced the
Objects
class, which has thehashCode(Object)
method, which does exactly what you want: returno.hashCode()
ifo
is non-null or0
otherwise.This class also has other methods that deal with possibly-
null
values, such asequals(Object, Object)
,toString(Object)
and a few others.because if it was static
"1".hashCode()
and"2".hashCode()
would have returned the same value, which is obviously wrong.It is specific per instance, and influenced by it, therefore it cannot be static.