制作一个空字符串常量是否值得?

2022-09-01 09:07:30

我有一个同事发誓

//in a singleton "Constants" class
public static final String EMPTY_STRING = "";

在整个项目中可用的常量类中。这样,我们可以写一些类似的东西

if (Constants.EMPTY_STRING.equals(otherString)) {
    ...
}

而不是

if ("".equals(otherString)) {
    ...
}

我说它是

  1. 不值得 - 它不会在堆/堆栈/字符串池中节省任何空间,
  2. 滥用常量类。

谁是这里的白痴?


答案 1

默认情况下,字符串文本处于暂存状态,因此无论您在代码中引用 “” 多少次,都只会有一个空的 String 对象。我看不出宣布EMPTY_STRING有任何好处。否则,您也可以为整数文本声明 ONE、TWO、THREE、FOUR 等。

当然,如果您以后想要更改EMPTY_STRING的值,则将其放在一个位置会很方便;)


答案 2

你到底为什么想要一个Java中的全局变量?詹姆斯·高斯林真的试图摆脱他们;请不要把它们带回来, 拜托。

0 == possiblyEmptyString.length()

possiblyEmptyString.isEmpty() // Java 6 only

都一样清楚。