Java 空值的一步检查&;弦空

Java 空值的一步检查&;弦空,java,string,Java,String,我有一个setter方法 然后,当运行另一个(比如generate)方法时,我需要检查字段的值。 因此,对于String属性,我需要知道它是否包含该值,或者它是否未设置。 所以它可能是空的,也可能是有意义的,有3种可能。 首先检查空值是相当无聊的: if (s != null) 然后是一个空字符串 if (!s.isEmpty()) 这里有单步支票吗?您可以告诉我,我可以用空字符串初始化字符串字段。[这是常见的吗?]但是如果有人将空值传递给setter方法集怎么办? 那么,在对该对象执行操

我有一个setter方法

然后,当运行另一个(比如generate)方法时,我需要检查字段的值。 因此,对于String属性,我需要知道它是否包含该值,或者它是否未设置。 所以它可能是空的,也可能是有意义的,有3种可能。 首先检查空值是相当无聊的:

if (s != null)
然后是一个空字符串

if (!s.isEmpty())
这里有单步支票吗?您可以告诉我,我可以用空字符串初始化字符串字段。[这是常见的吗?]但是如果有人将空值传递给setter方法集怎么办? 那么,在对该对象执行操作之前,我们是否总是必须检查对象值是否为null?

是的,setter方法可以检查它的值,如果字段为null,getter方法也可以返回非null值。但这是唯一的解决办法吗?对于程序员来说,getter和setter的工作太多了

公共图书馆,或

isEmpty相当于

s == null || s.length() == 0
s == null || s.trim().length() == 0
isBlank相当于

s == null || s.length() == 0
s == null || s.trim().length() == 0

在雅加达公地有一个StringUtils.isEmpty(String)。

试试这个

如果{


}使用org.apache.commons.lang.StringUtils,方法StringUtils.isNotBlank检查空值和空值。

然后在代码中:

import com.google.common.base.Strings;

if(!Strings.isNullOrEmpty(s)) {
  // Do stuff here
}

如果您正在进行android开发,您可以使用:

TextUtils.isEmpty (CharSequence str) 
在API级别1中添加
如果字符串为null或长度为0,则返回true。

是Apache库。为什么它不在standart java发行版中?需要考虑的是:null表示未设置,“”表示设置为空。在这里同意Pat的观点。有时看起来这只是不必要的簿记,但它们在语义上是不同的。如果成员为null,则表示“没有值”,而空字符串“有值;空字符串”。基于这一事实,方法通常会有不同的行为(按设计)。很抱歉发送垃圾邮件,但由于这有点相关,您可以通过让字符串文本进行测试(字符串文本仍然是字符串)来避免检查null并对非空字符串进行比较测试,例如“CheesySafeCompare”.equals(someString)正如您想象的那样工作,但不会抛出NullPointerException。只能将布尔表达式用作条件。尽管这可以防止出现null异常,但这不是等效的测试:如果s为null,则表达式解析为true。这是一种空安全的方法来测试s是否包含空字符串,它不测试s是否为空且不为空。区别很重要!