【问题标题】:java.lang.String#isEmpty() vs org.apache.commons.lang.StringUtils#isEmpty()java.lang.String#isEmpty() 与 org.apache.commons.lang.StringUtils#isEmpty()
【发布时间】:2015-06-30 00:19:04
【问题描述】:

虽然 oracles 方法的描述说它仅在字符串长度为 0 时返回 true,但字符串 utils 方法描述说该方法还检查字符串是否为“空”。那我应该用什么方法呢?如果字符串的长度为 0(例如“”),它自动不是“null”,或者如果我将字符串设置为“null”,然后用 oracles 方法检查它的空性,我会得到“false”,所以不是apaches方法的nullcheck是多余的还是我的想法完全错了?请帮助我理解其中的区别!

【问题讨论】:

  • 如果myStringnullmyString.isEmpty() 应该如何工作? -> “我将我的字符串设置为'null',然后用oracles方法检查它的空性我会得到'false'”,不,你会得到NullPointerException
  • 如果你用 oracle 的isEmpty() 检查一个空字符串,你会得到一个 NPE
  • 嗯,它在apache版本中工作
  • 只是不知道 oracles 方法会抛出 NPE
  • 如果使用oracle的方法就checkif (s != null && !s.isEmpty())

标签: java string apache-commons


【解决方案1】:

我倾向于始终使用 apache 版本。 Oracle 版本要求您有一个非空字符串,因为它是一个实例方法,例如

String s = null;
s.isEmpty(); <--- throws a NullPointerException
StringUtils.isEmpty(s); <--- returns true

如果您不想在项目中包含 commons-lang,您可以使用

实现相同的功能
s != null && s.isEmpty()

【讨论】:

    【解决方案2】:

    当您不知道字符串是否已设置时,Apache 方法很有用。

    if (s != null && !s.isEmpty()) {
        System.out.print(s)
    }
    

    if (!StringUtils.isEmpty(s)) {
        System.out.print(s)
    }
    

    它会让你的代码更简洁

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多