I have this code:
public static class MyWebDriver extends RemoteWebDriver {
@NotNull
private final String nodeId;
public MyRemoteWebDriver(@NotNull String nodeId) {
super();
this.nodeId = nodeId;
}
@Override
public void quit() {
System.out.println("deleting node: " + nodeId);
}
}
and it's guaranteed that nodeId that is passed into constructor is not null. And because nodeId field is final I expect it to be initialised in my quit() method.
But, in super() constructor there is a try-catch block which in case of exception calls quit() method and throws an exception. And in this case nodeId that I get in my quit() method is not initialised (has null value).
Are there any ways of avoiding it except
@Override
public void quit() {
if (nodeId != null) {
System.out.println("deleting node: " + nodeId);
}
}
this one? Which looks pretty stupid, because nodeId is marked as @NotNull.