Die Frage, wo in Java Konstanten zu definieren sind, ist in Foren oft aufgetaucht, aber ich habe Mühe, eine Lösung zu finden, mit der ich mich wohl fühle.Wo gibt es Konstanten in Java, die in einigen nicht verwandten Klassen verwendet werden?
Um es einfach zu machen, nehme ich an, ich habe zwei Klassen: WriteMyData
und ReadMyData
. Keine ist eine Unterklasse der anderen. Beide Klassen teilen sich zwei Konstanten, die für ihren Betrieb unerlässlich sind: String DELIMITER
und int LENGTH
. In der Zukunft möchte ich vielleicht den Wert dieser Konstanten ändern, damit sie irgendwo passend definiert werden sollten.
Der Konsens scheint oft den enum
Typ zu bevorzugen. Allerdings gibt es nichts zu in meinem Fall aufzuzählen, so dass ich am Ende mit nur einem Punkt in meinem enum
die ich nennen DEFAULT
:
public enum DataSettings {
DEFAULT(",", 32);
private final String delimiter;
private final int length;
DataSettings(String delmiter, int length) {
this.delimiter = delimiter;
this.length = length;
}
public String getDelimiter() { return delimiter; }
public int getLength() { return length; }
}
So in meinen beiden Klassen greife ich auf die Konstanten durch DataSettings.DEFAULT.getDelimiter()
und DataSettings.DEFAULT.getLength()
.
Ist das wirklich ein guter OO-Stil? Ist die Verwendung von enum
vielleicht Overkill? Wenn ich nicht enum
verwende, was sollte ich stattdessen tun? Das Erstellen einer Schnittstelle für Konstanten scheint verpönt zu sein, und es scheint keine natürliche Oberklasse zu geben, aus der meine Klassen ableiten könnten. Ist es ein Anfängerfehler, nur einen Standard Artikel in einem enum
zu haben?
Wenn es nichts aufzuzählen gibt - dh es gibt nur eine Dateneinstellung - machen Sie es einfach zu einer statischen Klasse mit Delimiter und Länge als öffentliche statische Endvariablen – mixmastered
Zeigt diese Variable auf denselben Wert? Willst du konstante Variable an einem Ort deklarieren? – iMBMT
Idealerweise sollte es eine zusätzliche Klasse geben, die alle Variablen als 'public static final' enthält. –