JavaFx中的断言和一般情况

Roh*_*hah 1 java assert javafx

在javaFx中,我们在每个生成的控制器类的initialize方法中看到以下语句,对于每个使用fxid的控件.

assert type != null : "fx:id=\"type\" was not injected: check your FXML file 'FinancialReport.fxml'.";
Run Code Online (Sandbox Code Playgroud)

我可以理解,该语句是为了确保在加载此fxml时,fx:id的控件存在于fxml布局文件中,如果控件不存在则会抛出异常并退出fxml加载过程.

但随后提到这一点,我了解到不建议在生产代码中使用断言.再次学习本教程,似乎断言很有用,特别是在调试时(但不能用于验证公共方法的参数).

我需要更多以下知识:

  1. 在生产代码中使用断言进行输入验证和此类目的是否可以?
  2. 当布尔表达式变为false时,我们可以做一些其他的事情吗,就像一些替代方法调用或某事(一个例子会很好).

Jam*_*s_D 5

在生产代码中使用断言进行输入验证和此类目的是否可以?

不.请参阅您发布的第一个链接(实际上说,断言不应该在生产代码中触发,而不是永远不会使用它们):默认情况下,在运行JVM时,断言甚至都没有打开.所以你的验证大部分时间都会失败.断言特别是作为调试工具 - 检查您的代码是否正确.在生成的控制器代码中添加的断言是很好的示例:它们检查@FXML控制器中的注释字段是否FXML具有匹配fx:id属性的文件中的元素.如果失败,则是编程错误,而不是数据验证错误.

当布尔表达式变为false时,我们可以做一些其他的事情吗,就像一些替代方法调用或某事(一个例子会很好).

只是使用一个if (...) { ... } else { ... }构造?