У меня есть этот код:
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
.