我总是在很多代码中看到这一点:
String s;
if (s == null || s.isEmpty()) {
//do something
}
但还不够
String s;
if (s.isEmpty()) {
//do something
}
特别是当我检查JavaFX TextField空白时,我很好奇。
答案 0 :(得分:3)
一般来说,
s.isEmpty()
checks if s
is an empty string,即一个没有字符的字符串。如果s
为null,则尝试调用s.isEmpty()
(或尝试调用s
上的任何其他方法)将抛出空指针异常。
(请注意,询问&#34是否真的有意义; isEmpty()
方法是否检查空值":s.isEmpty()
没有办法可以可能检查s
是否为空:如果s
为空,则无法调用该方法。)
在特定情况下,您引用:检查文本字段是否空白,请注意TextField.getText()
不会返回null,除非您先将其显式设置为null(使用textField.setText(null)
)。换句话说,默认值是一个空字符串,并且" internal"不会将text属性设置为null。用户键入时调用的方法。由于您的文本字段应限于定义它的直接类(或创建它的FXML文件的控制器),您可以控制对其setText(...)
方法的调用,然后您可以保证< / p>
TextField textField = ... ;
if (textField.getText() == null || textField.getText().isEmpty()) {
// ...
}
相当于
TextField textField = ... ;
if (textField.getText().isEmpty()) {
// ...
}
保证textField.getText() == null
始终为假。