Java: 'enum' vs 'String' als Parameter

7

Ich habe die Details der Methoden System libraries set und get durchgelesen, aber die Parameter sind normalerweise Strings.

Würdest du die Verwendung von String als Parameter schlechtes Üben seit dem Einschluss von enum betrachten?

Eine bessere Alternative wäre minimal public final String , Nein?

    
Andrew Turner 10.11.2008, 08:37
quelle

7 Antworten

18

Ich halte Enums für einen besseren Ansatz als Strings. Sie sind typsicher und der Vergleich ist schneller als der Vergleich von Strings.

Als Alternative zu Java 1.5 können Sie das typsichere Enum-Muster verwenden, das Joshua Bloch in seinem Buch Effective Java vorgeschlagen hat. Für typensichere Enums siehe auch Ссылка

    
Frank Grimm 10.11.2008, 08:44
quelle
12

Wenn Ihr Parametersatz zur Kompilierzeit begrenzt und bekannt ist, verwenden Sie enum .

Wenn Ihre Parametergruppe zum Zeitpunkt der Kompilierung geöffnet und nicht angezeigt wird, verwenden Sie Zeichenfolgen.

    
akuhn 10.11.2008 09:50
quelle
5

Nur weil Sie public final String als etwas deklarieren, das Sie als Parameter an eine Methode übergeben haben, hindert mich nichts daran, etwas zu geben, das ich mag.

Die Verwendung von enum s bedeutet, dass ich kein eigenes Objekt zum Übergeben erstellen kann, das beide Seiten des Problems schützt. Das einzige Mal, dass ich denken kann, dass Sie konstante Strings anstelle von Enums verwenden sollten, ist, wenn Sie Platz für den Benutzer benötigen, um Ihre Methode zu erweitern, um benutzerdefinierte Funktionalität zu aktivieren ...

    
Martin 10.11.2008 08:46
quelle
4

Wenn Sie sich auf System.setProperty (), System.getProperty () oder System.getenv () beziehen, denke ich, dass Strings hier geeignet sind, da die Menge der möglichen Schlüssel offen ist. Der Schlüsselparameter entspricht einem tatsächlichen Text- / Zeichenkettentyp-Wert in einer Datei oder einem Speicher irgendwo.

Wenn Sie eine geschlossene Reihe von Schlüsseln haben, denke ich, Enums wäre viel bevorzugt.

    
lycono 10.11.2008 08:47
quelle
3

Ich habe die "Methode der geringsten Überraschung" gelernt. Instinktiv ist die Verwendung von Enum das Richtige. Also würde ich dafür gehen. Ich bin sicher, dass die Java-Macher ähnlich denken.

Bearbeiten : Hervorragende Erklärung von POLS: Ссылка

    
Johannes Schaub - litb 10.11.2008 08:45
quelle
1

Obwohl die Verwendung von enums typsicher ist, ist die Notwendigkeit, enum in string und umgekehrt umzuwandeln, ziemlich häufig. Und dafür gibt es kein integriertes Feature in Java. Und Sie werden schließlich mit valueOf () und toString () enden. Und diese Vorgehensweise wird sich nicht viel von der Verwendung nur von Strings unterscheiden. Weil Sie Situationen behandeln müssen, in denen String nicht in Enum konvertiert werden kann.

Es ist also einfach, nur statische abschließende Strings zu verwenden, und dies ist eine gängige Praxis, AFAIK.

Sie möchten beispielsweise mit einem Server interagieren, indem Sie eine API verwenden. Sie müssen jede Methode und eine Antwort als Enum definieren. Und dann müssen Sie die Methoden toString und valueOf hinzufügen. Warum nicht einfach String verwenden?

    
Vanuan 21.04.2011 19:30
quelle
0

Die Verwendung von Strings in vorhandenen APIs ist keine schlechte Übung. Es ist eine schlechte Übung, die APIs zu ändern, nur weil Java nun Unterstützung für Enums bietet. Für neue APIs stimme ich dem zu, was alle anderen gesagt haben.

    
Martin v. Löwis 10.11.2008 08:47
quelle

Tags und Links