Späte Antwort, aber ich denke, es fügt diesem Thema etwas Neues hinzu.
Keine der vorherigen Antworten hat die ursprüngliche Frage beantwortet. Einige haben versucht, das Fehlen einer Konstante zu rechtfertigen, während andere Wege aufgezeigt haben, wie wir mit dem Fehlen der Konstante umgehen können. Aber niemand hat eine zwingende Rechtfertigung zum Nutzen der Konstanten geliefert, so dass ihr Mangel immer noch nicht richtig erklärt wird.
Eine Konstante wäre nützlich, da sie verhindern würde, dass bestimmte Codefehler unbemerkt bleiben.
Angenommen, Sie haben eine große Codebasis mit Hunderten von Verweisen auf "". Jemand ändert eine davon, während er durch den Code blättert, und ändert sie in "". Eine solche Änderung hätte eine hohe Wahrscheinlichkeit, unbemerkt in die Produktion zu gelangen. Zu diesem Zeitpunkt könnte ein Problem auftreten, dessen Quelle schwer zu erkennen ist.
OTOH, eine Bibliothekskonstante mit dem Namen EMPTY, würde, wenn sie denselben Fehler aufweist, einen Compilerfehler für etwas wie EM PTY erzeugen.
Es ist immer noch besser, eine eigene Konstante zu definieren. Jemand könnte seine Initialisierung immer noch versehentlich ändern, aber aufgrund seiner weit verbreiteten Verwendung wäre es viel schwieriger, die Auswirkungen eines solchen Fehlers unbemerkt zu lassen als einen Fehler in einem einzelnen Anwendungsfall.
Dies ist einer der allgemeinen Vorteile, die Sie durch die Verwendung von Konstanten anstelle von Literalwerten erhalten. Normalerweise wird erkannt, dass Sie durch die Verwendung einer Konstante für einen Wert, der an Dutzenden von Stellen verwendet wird, diesen Wert einfach an nur einer Stelle aktualisieren können. Weniger häufig wird anerkannt, dass dies auch verhindert, dass dieser Wert versehentlich geändert wird, da eine solche Änderung überall angezeigt wird. Also, ja, "" ist kürzer als LEER, aber LEER ist sicherer als "".
Um auf die ursprüngliche Frage zurückzukommen, können wir nur spekulieren, dass die Sprachdesigner diesen Vorteil der Bereitstellung von Konstanten für häufig verwendete Literalwerte wahrscheinlich nicht kannten. Hoffentlich werden eines Tages String-Konstanten in Java hinzugefügt.
outputBlah = ""
, und er zieht es wahrscheinlichsomething == String.Empty
übersomething.Length > 0
als auch (Sie einen Null - Check überspringen.)