enum

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hallo,

hätte noch eine Frage zu den enum s und zwar bekomme ich bei meiner Schnittstelle verschiedene Modes herein, also 3,4,5 und möchte nicht bei den case- Statements die Zahlen angeben sondern eben die Abkürzungen


Code:
readBuf[1]) 
                {
              
case 3: 
case 4:
case 6:


Also mein enum sollte so ungefähr aussehen:


Code:
public enum ModeVerbindung 
    {     
    ANFRAGE=3, OK=4, FEHLER=5    
    }

Ist das OK, wenn man das so macht, bzw. funktioniert das überhaupt so?

lg
 
S

SlaterB

Gast
wenn du einem Enum eine beliebige Zahl zuweisen willst,
dann brauchst du eine Exemplarvariable, einen Konstruktor usw,

und auch dann musst du deinen Integer noch manuell auf den passenden Enum umbiegen (in einer Map oder Liste/ Array nachschauen)

was automatisch geht:
die Enums erhalten in der Reihenfolge der Definition eine Nummerierung 0, 1, 2, 3

diese Zahl bekommst du mit ANFRAGE.ordinal();

von 1 kommst du auf das zweite Element z.B. mit dem Standard-Array:
ModeVerbindung x = ModeVerbindung.values()[1];
 

DocRandom

Top Contributor
Nein so nicht!
Enum beginnt mit 0 zu zählen, ergo mußt Du für die werte 0 -2 auch was angeben z.B:
Code:
public enum ModeVerbindung {
   DUMMY_0, DUMMY_1, DUMMY_2, ABFRAGE, OK, FEHLER
}
danach kannst Du es für Deine switch-case Abfrage nutzen

lg
DocRandom
 

byte

Top Contributor
oder einfach ne methode implementieren im enum, die ordinal() + 3 zurückgibt. dummy konstanten sind ziemlich dämlich.

man bricht sich aber auch keinen ab, den wert über ein feld im enum explizit anzugeben. vorteil: der wert ist nicht von der reihenfolge abhängig. denn ändert die mal jemand, hätte das sonst seiteneffekte auf die anwendung.
 

DocRandom

Top Contributor
..jo, weiß das Dummy-Constanten mist sind. :oops:
Aber er hat sicherlich auch für die Werte 0 - 2 einen Status, ergo könnte er die 3 Dummy durch die Stati ersetzen.

lg
DocRandom
 

byte

Top Contributor
Wie gesagt: man sollte gar keine Funktionalität an die ordinal() Werte knüpfen, weil sich die Funktionalität dann ändert, wenn man die Reihenfolge der Konstanten verändert -> schlechter Stil.
 
S

SlaterB

Gast
aber nur für hashCode-Berechnung zur Laufzeit, Maps und Arrays ist es doch ok oder?
solange man die Werte nicht persistiert oder eine fachliche Bedeutung zuordnet..
 

byte

Top Contributor
Ja genau. Für Hashcode ist es sogar sehr gut geeignet, weil ordinal() ja in jedem Fall eindeutige Werte zurückliefert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
I Enum gegen Enum tauschen Allgemeine Java-Themen 1
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
perlenfischer1984 TestNG - Enum testen Allgemeine Java-Themen 1
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
Q Enum Allgemeine Java-Themen 3
F Enum und Klasseninhalt Allgemeine Java-Themen 1
K Enum mit switch Allgemeine Java-Themen 2
D Enum Kategorien Allgemeine Java-Themen 10
C Datentypen Enum-Werte Bestanteil von anderem Enum Allgemeine Java-Themen 8
M Enum austauschbar machen Allgemeine Java-Themen 3
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
E Klassen Enum überladen od. austauschbar machen? Allgemeine Java-Themen 2
EnHancEd[] kurze enum-Frage Allgemeine Java-Themen 4
X Java findet eine Enum Klasse nicht Allgemeine Java-Themen 2
A Dynamisches Enum? Allgemeine Java-Themen 2
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
D Methode für generische enummap/enum Allgemeine Java-Themen 10
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
L HashMap mit Enum Keys Allgemeine Java-Themen 3
G Enum mit Array Allgemeine Java-Themen 3
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H2SO3- Enum mit Java 1.4 Allgemeine Java-Themen 6
S Erstes Enum bekommen? Allgemeine Java-Themen 2
M Verständnis enum - switch Allgemeine Java-Themen 2
R Java enum switch Allgemeine Java-Themen 11
S Enum-Class valueOf Function? Allgemeine Java-Themen 1
R Java enum Allgemeine Java-Themen 5
J Enum Problem: compiliert nicht mit Sun's compiler. Allgemeine Java-Themen 2
V Wie Enum an Funktion "übergeben" ? Allgemeine Java-Themen 4
N Java und Enum Allgemeine Java-Themen 3
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
G enum Integer zuweisen Allgemeine Java-Themen 14
G class, interface, or enum exp? Allgemeine Java-Themen 2
S Java Enum und ordinal() Allgemeine Java-Themen 4
S Enum Fehler Allgemeine Java-Themen 17
C Enum-namespace ? Allgemeine Java-Themen 5
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
C enum und Vererbung Allgemeine Java-Themen 3
K Warunung und Fehler bei Enum.valueOf Allgemeine Java-Themen 2
C enum Strings mit punkt ? Allgemeine Java-Themen 3
J Enum in Java Allgemeine Java-Themen 19

Ähnliche Java Themen

Neue Themen


Oben