Was ist der bessere Weg der Veröffentlichung der globalen Konstanten, die in Java?
Welche dieser Möglichkeiten der Veröffentlichung der globalen Konstanten ist besser? DANKE!!!
Method 1: final class with public static final fields
public final class CNST{
private CNST(){}
public static final String C1;
public static final String C2;
static{
C1="STRING1";
C2="STRING2";
}
}
//so I could call C1, C2 like:
//...some code...
//System.out.println(CNST.C1);
//System.out.println(CNST.C2);
Method 2: singleton with enum
public enum CNST{
INST;
public final String C1;
public final String C2;
CNST{
C1="STRING1";
C2="STRING2";
}
}
//so I could call C1, C2 like:
//...some code...
//System.out.println(CNST.INST.C1);
//System.out.println(CNST.INST.C2);
InformationsquelleAutor Will | 2013-08-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas, dass folgt gängigen Konventionen würde wie folgt Aussehen:
Dann finden Sie es später so:
Aber wenn ich auswählen müsste zwischen den beiden, die Sie geben, ich glaube, ich würde die erste wählen, denn die enum ist irreführend und hilft nicht funktional und nicht machen den code übersichtlicher.
Dies zeigt, wie enums richtig: docs.oracle.com/javase/tutorial/java/javaOO/enum.html Die Idee ist, dass ein enum ist ein Typ mit einer endlichen Menge von möglichen Werten, und in Ihrem code, den Sie wählen einen der gültigen Werte. Während es gültig ist Java zu setzen static final member-variable, die auf einem enum, können Sie dies auch auf eine Klasse, so beachten Sie auch diese verwenden.
Wie Sie Punkte aus, indem Effektive Java. Es ist eine berechtigte, wenn nicht vorzuziehen ist Weg für enum erlassen werden, um zu erkennen, singleton. Natürlich auch, reguläre Klasse nicht realisiert werden können, um zu erreichen, dass Jedoch enum nutzen kann, haben viele advatanges, wie es ist, Punkt aus diesem Artikel "Warum Enum Singleton sind besser in Java".
Doch die Frage ist nicht, ob enum erlassen werden sollten, zu erkennen, singleton. Die Frage ist
is singleton a better way to publish global variable or not?
so, dass ist meine Absicht, meine Frage.Ich Stimme mit bgp. Seine ziemlich chaotisch und nicht gemeinsam verwenden Sie es mit enum. Die Funktion von enum ist die Einführung von benutzerdefinierten Typs mit endlicher Wertemenge. Das macht nur der code unordentlich.
InformationsquelleAutor Brad Peabody
für fans von short ' N'sweet code wie mich, die gerne zu minimieren Anzahl der Zeichen in einem code, wenn Sie wollen, haben nicht die Notwendigkeit für pre-pend der name der Konstante mit einem Klasse Namen wie "MyGlobaConstants", erstellen Sie eine base activity-Klasse, wie MyBaseActivity, und erweitern Sie Ihre Aktivitäten aus. Als solche:
Tun, das hat auch andere Vorteile, wie das erstellen von Methoden, die alle Ihre Aktivitäten nutzen können, und ist generell eine gute Praxis.
InformationsquelleAutor Siavash