代码之家  ›  专栏  ›  技术社区  ›  keuleJ Tigran

建议使用StringUtils.EMPTY吗?

  •  80
  • keuleJ Tigran  · 技术社区  · 14 年前

    StringUtils.EMPTY 而不是 ""

    我的意思是要么作为返回值,要么设置字符串变量的值。我不是说比较,因为我们用 StringUtils.isEmpty()

    10 回复  |  直到 11 年前
        1
  •  105
  •   David Pierre    14 年前

    当然不是。 你真的认为“”不够清楚吗?

    常量实际上有3个用例:

    1. 记录值的含义(使用常量名+javadoc)
    2. 提供特殊值的快捷方式以避免某些初始成本

        2
  •  53
  •   Christopher Klewes    14 年前

    我用 StringUtils.EMPTY ,用于隐藏文字并表示 return StringUtils.EMPTY 完全是预期的,应该返回空字符串, "" "" 很容易就变成别的东西,这可能只是个错误。我认为 EMPTY 更具表现力。

        3
  •  27
  •   Erick Robertson    14 年前

    不,只要用 ""

    字面意义 清澈如水晶。关于什么意思没有误解。我不知道你为什么需要一个类常量。我只能假设在包含 StringUtils 而不是 . 但这并不意味着你应该使用它。

    如果人行道上有块石头,你就不用扔了。

        4
  •  11
  •   j__m    8 年前

    我很惊讶有多少人乐于盲目地认为“”确实是一个空字符串,而不是(偶然地?)包含任何Unicode的奇妙的不可见和非间距字符。为了爱一切美好和体面的事物,尽可能地使用空的。

        5
  •  11
  •   Matthieu    5 年前

    String interning 和类初始化:

    • 全部 Java源代码中的文本被内联,使 任何 "" StringUtils.EMPTY 这个 相同的
    • 使用 可以 初始化 StringUtils 类,因为它访问其静态成员 EMPTY final (JLS在这一点上是具体的)。然而, org.apache.commons.lang3.StringUtils.EMPTY

    见a related answer on String interning 以及 Class initialization JLS 12.4.1 .

        6
  •  8
  •   syntagma    6 年前

    我不太喜欢用它,因为 return ""; return StringUtils.EMPTY .

    但是,有一个 return " "; 而不是 ,您可能会遇到不同的行为(关于是否正确测试空字符串)。

        7
  •  4
  •   cherouvim    14 年前

    StringUtils的设计者大量使用这个常量,这是正确的做法,但这并不意味着你也应该使用它。

        8
  •  1
  •   Bozho    14 年前

    StringUtils.isNotEmpty(..)

        9
  •  1
  •   Grzegorz Rożniecki    9 年前

    我发现 StringUtils.EMPTY 在某些情况下对易读性有用。尤其是:

    1. 三元运算符例如。

      item.getId() != null ? item.getId() : StringUtils.EMPTY;
      
    2. 从方法返回空字符串,以确认是,我真的想这么做。

    StringUtils.EMPTY 是创建的。否则,如果尝试实例化字符串文本 "" 每次JVM都必须检查它是否已经存在于字符串池中(它很可能会这样,所以没有额外的实例创建开销)。肯定使用 StringUtils.EMPTY 不需要检查字符串池?

        10
  •  1
  •   Matthieu    8 年前

    空的 字符串与平台无关 空的 (在Java中)。

    File.separator

    但你想怎么做就怎么做。你不能像这样打字 return " ";

        11
  •  0
  •   Oron    5 年前

    是的,这是有道理的。 这可能不是唯一的出路,但我看不出有什么办法可以说“没有道理”。

    在我看来:

    • 它解释了你的意思是空的,而空的可能不会。
    • 如果不定义自己的变量并在多个地方使用它,仍然需要在任何地方进行更改。
    • 如果在代码中不允许使用自由字符串文字,那么这会有帮助。