What is immutable class? how to make a Class explicitly
"Immutable"?Wap to make a class explicitly immutable.
Answer Posted / qamrun nisa
Immutable objects whose state (i.e. the object’s data) does
not change once it is instantiated (i.e. it becomes a
read-only object after instantiation). Immutable classes are
ideal for representing numbers (e.g. java.lang.Integer,
java.lang.Float, java.lang.BigDecimal etc are immutable
objects), enumerated types, colors (e.g. java.awt.Color is
an immutable object), short lived objects like events,
messages etc.
Writing an immutable class is generally easy but there can
be some tricky situations. Follow the following guidelines:
1. A class is declared final (i.e. final classes cannot be
extended).
public final class MyImmutable { … }
2. All its fields are final (final fields cannot be mutated
once assigned).
private final int[] myArray; //do not declare as -> private
final int[] myArray = null;
3. Do not provide any methods that can change the state of
the immutable object in any way – not just setXXX
methods, but any methods which can change the state.
4. The “this” reference is not allowed to escape during
construction from the immutable class and the immutable
class should have exclusive access to fields that contain
references to mutable objects like arrays, collections
and mutable classes like Date etc by:
• Declaring the mutable references as private.
• Not returning or exposing the mutable references to the
caller (this can be done by defensive copying)
| Is This Answer Correct ? | 1 Yes | 0 No |
Post New Answer View All Answers
Can keyword be used as identifier?
Why do we override tostring method in java?
Can java arraylist hold different types?
How do you remove duplicates in java?
Name few "optional" classes introduced with java 8 ?
Write a program to check for a prime number in java?
Can you sort a list in java?
What methods are used to get and set the text label displayed by a button object?
What are the 4 versions of java?
How we can run a jar file through command prompt in java?
Which collection is ordered in java?
What does it mean that strings are immutable?
What are the difference between string, string builder, and string buffer in java?
What does flagged out mean?
Under what conditions is an object’s finalize() method invoked by the garbage collector?