Risposta tardiva, ma penso che aggiunga qualcosa di nuovo a questo argomento.
Nessuna delle risposte precedenti ha risposto alla domanda originale. Alcuni hanno tentato di giustificare la mancanza di una costante, mentre altri hanno mostrato modi in cui possiamo affrontare la mancanza della costante. Ma nessuno ha fornito una giustificazione convincente per il beneficio della costante, quindi la sua mancanza non è ancora adeguatamente spiegata.
Una costante sarebbe utile perché impedirebbe a determinati errori di codice di passare inosservati.
Supponiamo di avere una grande base di codice con centinaia di riferimenti a "". Qualcuno modifica uno di questi mentre scorre il codice e lo cambia in "". Un tale cambiamento avrebbe un'alta probabilità di passare inosservato nella produzione, a quel punto potrebbe causare qualche problema la cui fonte sarà difficile da rilevare.
OTOH, una costante di libreria denominata EMPTY, se soggetta allo stesso errore, genererebbe un errore del compilatore per qualcosa come EM PTY.
Definire la propria costante è ancora meglio. Qualcuno potrebbe ancora alterarne l'inizializzazione per errore, ma a causa del suo ampio utilizzo, l'impatto di un tale errore sarebbe molto più difficile da passare inosservato rispetto a un errore in un singolo caso d'uso.
Questo è uno dei vantaggi generali che si ottengono dall'utilizzo di costanti invece di valori letterali. Le persone di solito riconoscono che l'utilizzo di una costante per un valore utilizzato in dozzine di luoghi consente di aggiornare facilmente quel valore in un solo punto. Ciò che viene meno spesso riconosciuto è che ciò impedisce anche che quel valore venga modificato accidentalmente, perché un tale cambiamento si manifesterebbe ovunque. Quindi, sì, "" è più corto di EMPTY, ma EMPTY è più sicuro da usare di "".
Quindi, tornando alla domanda originale, possiamo solo ipotizzare che i progettisti del linguaggio probabilmente non fossero consapevoli di questo vantaggio di fornire costanti per valori letterali che vengono usati di frequente. Si spera che un giorno vedremo le costanti di stringa aggiunte in Java.
outputBlah = ""
, e probabilmente preferiscesomething == String.Empty
più disomething.Length > 0
così (si salta un controllo nullo.)