I’m trying to put boolean condition in Constructor.
The task is to create Object only if the condition is true.
In the example below: if checkInitialPass()
returns false, the Object should not be created.
SecuredNotepad(int numPages) { super(numPages); checkInitialPass(); }
Advertisement
Answer
That’s not possible.
You have (at least) two options:
1. Throw an exception
SecuredNotepad(int numPages) { super(numPages); if (!checkInitialPass()) { throw new IllegalArgumentException("Invalid"); } }
2. Create a static factory method
Make the constructor private and create a static factory method.
private SecuredNotepad(int numPages) { super(numPages); } public static SecuredNotepad createInstance(int numPages) { if (checkInitialPass()) { return new SecuredNotepad(numPages); } else { return null; // Or throw exception } }
I would go for the factory method which would throw an exception if the initial pass failed. Alternatively, if you want to expand it even more, you could use a SecureNotepadFactory
, as Thomas Timbul mentioned in the comments.