是否推荐使用StringUtils.EMPTY?

你使用StringUtils.EMPTY而不是""

我的意思是要么作为返回值,要么设置一个stringvariables的值。 我不是要比较,因为我们使用StringUtils.isEmpty()

当然不是。 你真的觉得“”还不够清楚吗?

常量基本上有3个用例:

  1. logging一个值的含义(用常量名+ javadoc)
  2. 在一个共同的价值上同步客户端。
  3. 提供特殊值的快捷方式以避免一些初始成本

这里没有适用。

我使用StringUtils.EMPTY来隐藏文字,也表示return StringUtils.EMPTY是完全预期的,应该返回一个空string, ""可以导致假设, ""可以很容易地改成别的东西,这是也许只是一个错误。 我认为EMPTY更具performance力。

不,只是使用""

文字""清晰如水晶。 对于什么是没有误解的。 我不知道你为什么需要一个类常量。 我只能假定这个常量在整个包含StringUtils的包中使用而不是"" 。 但这并不意味着你应该使用它。

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

我真的不喜欢用它,因为return "";return StringUtils.EMPTY短。

然而,使用它的一个虚假的优点是,如果你inputreturn " "; 而不是return ""; ,你可能会遇到不同的行为(关于如果你正确地testing一个空string)。

如果你的class级没有使用其他的公共资源,那么只有这个魔法值才有这个依赖。

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

我将在这里添加我的两分钱,因为我没有看到任何人谈论String interning和类初始化:

  • Java源代码中的所有String字面都是实现的,使得任何 ""StringUtils.EMPTY都是同一个对象
  • 使用StringUtils.EMPTY 可以初始化StringUtils类,因为它只有在没有声明为final才会访问它的静态成员EMPTY (JLS在该点上是特定的)

请参阅JLS 12.4.1中 关于String interning和Class初始化的相关答案 。

我惊讶于有多less人乐意盲目地认为“”确实是一个空string,并且不会(意外地)包含任何Unicode的美妙的不可见和非空白字符。 为了一切美好而又体面的爱情,只要有可能就使用EMPTY。

老实说,我也没有看到太多的用处。 如果你想比较一个空string,只需使用StringUtils.isNotEmpty(..)

不,因为我有更多的写作。 而一个string是plattform独立的 (在Java中)。

File.separator比“/”或“\”更好。

但是,只要你喜欢。 你不能像return " ";一个错字return " ";

我发现StringUtils.EMPTY在某些情况下易于理解。 特别是:

  1. 三元运算符,例如。

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

另外通过使用常量,创build对StringUtils.EMPTY的引用。 否则,如果您尝试实例化string文字""每次JVM将不得不检查它是否已经存在于string池中(很可能会这样,所以没有额外的实例创build开销)。 当然使用StringUtils.EMPTY避免了检查string池的必要吗?