【发布时间】:2009-12-16 08:58:51
【问题描述】:
我有一个 setter 方法。
然后当另一个(比如生成)方法运行时,我需要检查我的字段的值。 因此,对于 String 属性,我需要知道它是否包含该值或是否未设置。 所以它可能是 null、"" 或有意义的东西,有 3 种可能性。 首先检查空值是相当无聊的:
if (s != null)
然后对于一个空字符串
if (!s.isEmpty())
这里有一步检查吗?你可以告诉我,我可以用空字符串初始化我的字符串字段。 [这很常见吗? ] 但是如果有人将空值传递给 setter 方法 setS 怎么办? 那么在对那个对象做某事之前,我们是否总是需要检查 Object 的值是否为 null 呢?
嗯,是的,setter 方法可以检查它的值,如果字段为 null,getter 方法也可以返回非 null 值。但它是唯一的解决方案吗?对于程序员来说,getter 和 setter 的工作量太大了!
【问题讨论】:
-
是的 Apache 库。为什么,它不在标准的 Java 发行版中?
-
需要考虑的事情:null表示未设置,“”表示设置为空。
-
在这里同意帕特。有时这似乎只是不必要的簿记,但它们在语义上是不同的。如果成员为空,则表示“没有值”,而空字符串“有值;空字符串”。基于这一事实,方法通常具有不同的行为(通过设计)。
-
很抱歉向 cmets 发送垃圾邮件,但由于它有些相关,您可以通过使用字符串来避免对非空字符串的检查空值和比较测试-literal 进行测试(字符串文字仍然是字符串),例如"CheesySafeCompare".equals( someString ) 像您想象的那样工作,但不会抛出 NullPointerException。