What's a good way to make sure an init method is invoked in java? The alternatives I see are
NullPointerExceptionpublic void foo() {
if (!inited) {
throw new IllegalArgumentException("not initalized");
}
...
}
public void foo() {
if (!inited) {
throw new IllegalArgumentException("not initalized");
}
fooInternal();
}
private void fooInternal(){ ... };
public void foo() {
init();
...
}
public void init() {
if(!inited) {
...
}
}
public void foo() {
if (!inited) {
init();
}
...
}
Most of these approaches are very verbose and decreases overall readability.
If initialisation is part of the usage contract throw IllegalStateException because the client of the class has not caused it to transition to the correct "initialised" state…
Whether you initialise upon creation or not depends on how it is to be used. For instance if a possibility is that it may be used by a Spring ApplicationContext then you'll want to defer initialisation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With