Difference between Mutable objects and Immutable objects [duplicate]
Mutable objects have fields that can be changed, immutable objects have no fields that can be changed after the object is created.
A very simple immutable object is a object without any field. (For example a simple Comparator Implementation).
class Mutable{ private int value; public Mutable(int value) { this.value = value; } //getter and setter for value}class Immutable { private final int value; public Immutable(int value) { this.value = value; } //only getter}
Mutable objects can have their fields changed after construction. Immutable objects cannot.
public class MutableClass { private int value; public MutableClass(int aValue) { value = aValue; } public void setValue(int aValue) { value = aValue; } public getValue() { return value; }}public class ImmutableClass { private final int value; // changed the constructor to say Immutable instead of mutable public ImmutableClass (final int aValue) { //The value is set. Now, and forever. value = aValue; } public final getValue() { return value; }}
Immutable objects are simply objects whose state (the object's data) cannot change after construction. Examples of immutable objects from the JDK include String and Integer.
For example:(Point is mutable and string immutable)
Point myPoint = new Point( 0, 0 ); System.out.println( myPoint ); myPoint.setLocation( 1.0, 0.0 ); System.out.println( myPoint ); String myString = new String( "old String" ); System.out.println( myString ); myString.replaceAll( "old", "new" ); System.out.println( myString );
The output is:
java.awt.Point[0.0, 0.0]java.awt.Point[1.0, 0.0]old Stringold String