Respuesta tardía, pero creo que agrega algo nuevo a este tema.
Ninguna de las respuestas anteriores ha respondido a la pregunta original. Algunos han intentado justificar la falta de una constante, mientras que otros han mostrado formas en que podemos lidiar con la falta de la constante. Pero nadie ha brindado una justificación convincente para el beneficio de la constante, por lo que su falta aún no se explica adecuadamente.
Una constante sería útil porque evitaría que ciertos errores de código pasen desapercibidos.
Digamos que tiene una base de código grande con cientos de referencias a "". Alguien modifica uno de estos mientras se desplaza por el código y lo cambia a "". Tal cambio tendría una alta probabilidad de pasar desapercibido en la producción, en cuyo punto podría causar algún problema cuya fuente será difícil de detectar.
OTOH, una constante de biblioteca llamada EMPTY, si está sujeta al mismo error, generaría un error de compilación para algo como EM PTY.
Definir tu propia constante es aún mejor. Alguien aún podría alterar su inicialización por error, pero debido a su amplio uso, el impacto de dicho error sería mucho más difícil pasar desapercibido que un error en un solo caso de uso.
Este es uno de los beneficios generales que obtiene al usar constantes en lugar de valores literales. Las personas generalmente reconocen que el uso de una constante para un valor utilizado en docenas de lugares le permite actualizar fácilmente ese valor en un solo lugar. Lo que se reconoce con menos frecuencia es que esto también evita que ese valor se modifique accidentalmente, porque tal cambio se vería en todas partes. Entonces, sí, "" es más corto que VACÍO, pero VACÍO es más seguro de usar que "".
Entonces, volviendo a la pregunta original, solo podemos especular que los diseñadores de lenguaje probablemente no estaban al tanto de este beneficio de proporcionar constantes para valores literales que se usan con frecuencia. Con suerte, algún día veremos constantes de cadena agregadas en Java.
outputBlah = ""
, y probablemente prefieresomething == String.Empty
mássomething.Length > 0
, así (se salta un cheque nulo.)