变量为 null 但它真的不是吗?
Variable is null but it really isn't?
我正在使用 Java + JavaFX 编写一个小应用程序。
在控制器中 class 我有我的 PasswordField
:
@FXML
PasswordField password;
以及临时存储密码的字段:
private String rootPassword;
那我有一个处理密码的方法:
private void handlePasswordField() {
if (!password.getText().isEmpty()) {
this.rootPassword = password.getText();
} else {
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(nbtcInstaller.getPrimaryStage());
alert.setTitle("No password");
alert.setHeaderText("No password provided");
alert.setContentText("Please enter a new ROOT password");
alert.showAndWait();
}
}
以及在按下 "install" 按钮后启动的方法:
@FXML
private void handleCommand() {
handlePasswordField();
doAllTheOtherStuff();
Platform.exit();
}
当我不提供密码时,我会收到警报,但 doAllTheOtherStuff()
仍会启动。在没有提供密码的情况下,如何防止它启动 doAllTheOtherStuff()
方法?
只需将方法 return 设为布尔值:
private boolean handlePasswordField() {
if (!password.getText().isEmpty()) {
this.rootPassword = password.getText();
return true;
} else {
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(nbtcInstaller.getPrimaryStage());
alert.setTitle("No password");
alert.setHeaderText("No password provided");
alert.setContentText("Please enter a new ROOT password");
alert.showAndWait();
return false;
}
}
然后有需要的时候去看看:
@FXML
private void handleCommand() {
if(handlePasswordField()) {
doAllTheOtherStuff();
}
Platform.exit();
}
最后一个建议是将方法的名称更改为更清晰,但这只是可选的:
private boolean isPasswordValid() {
那么if
就更自然了:
if(isPasswordValid()) {
我正在使用 Java + JavaFX 编写一个小应用程序。
在控制器中 class 我有我的 PasswordField
:
@FXML
PasswordField password;
以及临时存储密码的字段:
private String rootPassword;
那我有一个处理密码的方法:
private void handlePasswordField() {
if (!password.getText().isEmpty()) {
this.rootPassword = password.getText();
} else {
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(nbtcInstaller.getPrimaryStage());
alert.setTitle("No password");
alert.setHeaderText("No password provided");
alert.setContentText("Please enter a new ROOT password");
alert.showAndWait();
}
}
以及在按下 "install" 按钮后启动的方法:
@FXML
private void handleCommand() {
handlePasswordField();
doAllTheOtherStuff();
Platform.exit();
}
当我不提供密码时,我会收到警报,但 doAllTheOtherStuff()
仍会启动。在没有提供密码的情况下,如何防止它启动 doAllTheOtherStuff()
方法?
只需将方法 return 设为布尔值:
private boolean handlePasswordField() {
if (!password.getText().isEmpty()) {
this.rootPassword = password.getText();
return true;
} else {
Alert alert = new Alert(AlertType.WARNING);
alert.initOwner(nbtcInstaller.getPrimaryStage());
alert.setTitle("No password");
alert.setHeaderText("No password provided");
alert.setContentText("Please enter a new ROOT password");
alert.showAndWait();
return false;
}
}
然后有需要的时候去看看:
@FXML
private void handleCommand() {
if(handlePasswordField()) {
doAllTheOtherStuff();
}
Platform.exit();
}
最后一个建议是将方法的名称更改为更清晰,但这只是可选的:
private boolean isPasswordValid() {
那么if
就更自然了:
if(isPasswordValid()) {