Konstanten in Java

  • Themenstarter Themenstarter ZWWFPF
  • Beginndatum Beginndatum
Z

ZWWFPF

Gast
Gibt es eine Möglichkeit in Java eine zenmtrale Datei mit mit diversen Konstanten zu erstellen, auf die man dann in diversen Klassen darauf zugreifen kann?

In C++ gibt es die Möglichkeit #defines in einer Header Datei zu erstellen, und diese Header Datei in den jeweiligen Klassen zu includieren.
Wie sieht das in Java aus?
 
Java:
public class Constants {
  public static final int SOME_VALUE = 1;
}

// Zugriff:
int i = Constants.SOME_VALUE;
 
Und imho ist eine Klasse "Constants" viel zu Allgemein. Lieber mehrere Klassen bzw. ENUMs verwenden, diese dafür aber passend benannt.
 
Mal andersherum gefragt: Wofür brauchst du das? Handelt es sich z.B. um eine Art Settings, helfen eventuell Properties, die lassen sich auch leicht von einer Datei lesen und schreiben.
 
Manchmal müssen es Compile-Time-Konstanten sein. Da helfen Properties nicht weiter. In dem Fall nehm ich eine globale Konstanten-Klasse und eventuell darin statische Inner Classes als Namespaces zur besseren Übersicht.
Früher hat man auch oft Konstanten-Interfaces gesehen (z.B. SwingConstants). Das ist aber definitiv ein Antipattern.
 
Ich persönlich finde es auch ein Antipattern, Konstanten in einer Klasse zusammenzupferchen (wo ist denn z. B. designtechnisch der Unterschied zwischen [c]SwingConstants[/c] und [c]XMLConstants[/c]?). Das mag aus Entwicklersicht zwar immer einfach erscheinen, erschwert aber die Verwendung. Besser ist, die Konstanten dort zu definieren, wo sie am ehesten gebraucht werden. Das ist auch nicht immer einfach, wenn sie in mehreren Klassen benötigt werden. Hängt halt immer vom konkreten Fall ab.

Mit Enums umgeht man das ganze natürlich, aber auch die sind nicht überall das Mittel der Wahl.
 
(wo ist denn z. B. designtechnisch der Unterschied zwischen SwingConstants und XMLConstants ?)
Es gibt Objekte vom Typ SwingConstants -- im Gegensatz zu XMLConstants.
Die Konstante in den Klassen zu definieren, wo sie (am ehsten) hingehören, ist natürlich die beste Lösung. Aber manchmal muss man auch Ausnahmen zulassen, wenn es der Übersichtlichkeit dient.
 

Zurück
Oben