One
of my friend got this interview question. Interviewer asked him that a class ‘X’ has only one constructor, and it is throwing exception like below.
class X{ private X() { throw new IllegalStateException("No instances!"); } ... ... }
Interviewer
asked him, tell me the situation, where can I use above kind of class?
Why the constructor
is private?
If
you do not want to create an instance of class from outside, you can make the
constructor private. But if you do not throw an exception from the constructor,
the code inside the class X, can create an instance of the class.
class X{ private X() { } public static X getInstance() { return new X(); } }
You
can get an instance of class X, by calling getInstance method.
On what cases the constructor should
throw an exception?
Suppose if a class has only static methods, then no point in creating an object to that class. You can always use the class name to access the static methods. By throwing an exception, we can prevent accidental invocation of the constructor from within the class.
Suppose if a class has only static methods, then no point in creating an object to that class. You can always use the class name to access the static methods. By throwing an exception, we can prevent accidental invocation of the constructor from within the class.
This
scenario make sense for the classes java.lang.Math, java.util.Arrays. These
classes has only static methods.
You may like
No comments:
Post a Comment