У меня есть этот код:
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);
}
}
и он гарантировал, что nodeId, передаваемый в конструктор, не null. И поскольку поле nodeId final, я ожидаю, что оно будет инициализировано в моем методе quit().
Но в конструкторе super() есть блок try-catch, который в случае исключения вызывает метод quit() и генерирует исключение. И в этом случае nodeId, который я получаю в моем методе quit(), не инициализирован (имеет значение null).
Есть ли способы избежать этого, кроме
@Override
public void quit() {
if (nodeId != null) {
System.out.println("deleting node: " + nodeId);
}
}
этот? Это выглядит довольно глупо, потому что nodeId помечен как @NotNull.