Поздний ответ, но я думаю, что он добавляет что-то новое в эту тему.
Ни один из предыдущих ответов не ответил на оригинальный вопрос. Некоторые пытались оправдать отсутствие постоянной, в то время как другие показали, как мы можем справиться с отсутствием постоянной. Но никто не дал убедительного обоснования в пользу константы, поэтому ее отсутствие до сих пор не объяснено должным образом.
Константа будет полезна, потому что она предотвратит некоторые ошибки кода, оставшиеся незамеченными.
Скажем, у вас большая база кода с сотнями ссылок на "". Кто-то изменяет один из них при прокрутке кода и меняет его на «». Такое изменение будет иметь высокую вероятность остаться незамеченным в производстве, и в этот момент может возникнуть какая-то проблема, источник которой будет сложно обнаружить.
OTOH, библиотечная константа с именем EMPTY, если подвержена той же ошибке, сгенерирует ошибку компилятора для чего-то вроде EM PTY.
Определение вашей собственной константы все еще лучше. Кто-то может все же изменить его инициализацию по ошибке, но из-за его широкого применения воздействие такой ошибки будет гораздо труднее остаться незамеченным, чем ошибка в одном случае использования.
Это одно из основных преимуществ, которые вы получаете от использования констант вместо литеральных значений. Люди обычно признают, что использование константы для значения, используемого в десятках мест, позволяет легко обновить это значение только в одном месте. Что менее часто признается, так это то, что это также предотвращает случайное изменение этого значения, потому что такое изменение будет проявляться повсюду. Так что да, "" короче, чем EMPTY, но EMPTY безопаснее использовать, чем ""
Итак, возвращаясь к первоначальному вопросу, мы можем только предполагать, что разработчики языка, вероятно, не знали об этом преимуществе предоставления констант для литеральных значений, которые часто используются. Надеюсь, однажды мы увидим строковые константы, добавленные в Java.
outputBlah = ""
и он , вероятно , предпочитаетsomething == String.Empty
более ,something.Length > 0
а также (пропустить проверку нулевой.)