Dies ist eine alte Frage, aber ich dachte, ich würde trotzdem meine 2 Cent beisteuern, da dieser Thread heute im Gespräch auftauchte.
Dies antwortet nicht genau, warum es keine Konstante gibt. aber wie Sie Ihre Klassen unveränderlich machen. (Leider habe ich noch nicht genug Ruf, um als Kommentar zur akzeptierten Antwort zu posten)
Um die Unveränderlichkeit eines Objekts zu gewährleisten, müssen Sie Ihre Klassen sorgfältiger gestalten, damit sie unveränderlich sind. Dies erfordert etwas mehr Sorgfalt als eine veränderbare Klasse.
Dies geht zurück auf Josh Blochs effektives Java- Element 15 - Mutabilität minimieren . Wenn Sie das Buch nicht gelesen haben, nehmen Sie eine Kopie und lesen Sie sie einige Male durch. Ich garantiere, dass es Ihr figuratives "Java-Spiel" verbessern wird .
In Punkt 15 schlägt Bloch vor, die Veränderbarkeit von Klassen einzuschränken, um den Status des Objekts sicherzustellen.
Um das Buch direkt zu zitieren:
Eine unveränderliche Klasse ist einfach eine Klasse, deren Instanzen nicht geändert werden können. Alle in jeder Instanz enthaltenen Informationen werden beim Erstellen bereitgestellt und sind für die Lebensdauer des Objekts festgelegt. Die Java-Plattformbibliotheken enthalten viele unveränderliche Klassen, einschließlich String, die primitiven Box-Klassen sowie BigInteger und BigDecimal. Dafür gibt es viele gute Gründe: Unveränderliche Klassen sind einfacher zu entwerfen, zu implementieren und zu verwenden als veränderbare Klassen. Sie sind weniger fehleranfällig und sicherer.
Bloch beschreibt dann, wie Sie Ihre Klassen unveränderlich machen, indem Sie 5 einfache Regeln befolgen:
- Geben Sie keine Methoden an, die den Status des Objekts ändern (z. B. Setter, auch Mutatoren genannt ).
- Stellen Sie sicher, dass die Klasse nicht erweitert werden kann (dies bedeutet, dass die Klasse selbst als deklariert wird
final
).
- Machen Sie alle Felder
final
.
- Machen Sie alle Felder
private
.
- Stellen Sie den exklusiven Zugriff auf veränderbare Komponenten sicher. (durch defensive Kopien der Objekte)
Für weitere Informationen empfehle ich dringend, eine Kopie des Buches abzuholen.
const
Schlüsselwort, aber keine zugrunde liegende Funktion. Titel und Tags wurden entsprechend korrigiert.