Object Class Methods and Constructor
hashCode() method
The general contract of hashCode
is:
Whenever it is invoked on the same object more than once during an execution of a Java application, the
hashCode
method must consistently return the same integer, provided no information used inequals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.If two objects are equal according to the
equals(Object)
method, then calling thehashCode
method on each of the two objects must produce the same integer result.It is not required that if two objects are unequal according to the
equals(java.lang.Object)
method, then calling thehashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
equals() method
Even though foo1 and foo2 are created with the same fields, they are pointing to two different objects in memory. The default equals()
implementation therefore evaluates to false
.
getClass() method
clone() method
The clone()
method is used to create and return a copy of an object. This method arguable should be avoided as it is problematic and a copy constructor or some other approach for copying should be used in favour of clone()
For the method to be used all classes calling the method must implement the Cloneable
interface.
The Cloneable interface itself is just a tag interface used to change the behaviour of the native clone()
method which checks if the calling objects class implements Cloneable . If the caller does not implement this interface a CloneNotSupportedException
will be thrown. The Object class itself does not implement this interface so a CloneNotSupportedException
will be thrown if the calling object is of class Object .