是否推荐使用StringUtils.EMPTY?
你使用StringUtils.EMPTY
而不是""
?
我的意思是要么作为返回值,要么设置一个stringvariables的值。 我不是要比较,因为我们使用StringUtils.isEmpty()
当然不是。 你真的觉得“”还不够清楚吗?
常量基本上有3个用例:
- logging一个值的含义(用常量名+ javadoc)
- 在一个共同的价值上同步客户端。
- 提供特殊值的快捷方式以避免一些初始成本
这里没有适用。
我使用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
在某些情况下易于理解。 特别是:
-
三元运算符,例如。
item.getId() != null ? item.getId() : StringUtils.EMPTY;
- 从方法中返回空string,以确认是我真的想这样做。
另外通过使用常量,创build对StringUtils.EMPTY
的引用。 否则,如果您尝试实例化string文字""
每次JVM将不得不检查它是否已经存在于string池中(很可能会这样,所以没有额外的实例创build开销)。 当然使用StringUtils.EMPTY
避免了检查string池的必要吗?