int mit Enums vergleichen

  • Themenstarter Themenstarter Se7enDays
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Se7enDays

Gast
Hallo,

habe hier ein Problem und steh grad auf dem Schlauch, was Enums betrifft. Unzwar möchte ich gern einen Vergleich zwischen einem int und einem Enum machen, also z.B. getIntegerZahl() == TestEnum.ELEMENT1.

Nur meckert Java dass es inkompatible Objekte sind, die man nicht vergleichen lassen kann. Ich kann das Lösen mit ordinal(), aber ich dachte es gibt da eine schönere Variante. Kennt da jmd eine, oder ist ausser ordinal() hier nichts anderes möglich?
 
schöner wirds nicht, außer mit Hilfsoperationen a la
e(int,enum);
für
isEqual(int,enum);
oder ähnliches
 
Es gibt Enum.ordinal(), mit der man die "laufene Nummer" des Enum-Elements als int herausfinden kann.
Aber schön ist das nicht. Man benutzt typsicherer Enums ja deswegen, weil man nicht mehr mit ints arbeiten will.
Über das Design sollte nochmal nachgedacht werden.
 
Enums sind Klassen/Objekte. Außer im Fall von Autoboxing kann man kein Objekt mit einem primitiven Datentyp vergleichen.

ms
 
du kannst enums konstruktoren verpassen.

Code:
enum MyEnum
{
   ELEMENT1( 23 );

   public final int value;

   private MyEnum(int value)
   {
       this.value = value;
   }
}

ich benutz solche enums gern, wenn ich mit werten aus einer datenbank arbeite, bei der felder eigentlich enums darstellen, aufgrund von bequemlichkeit aber als int gespeichert werden.
 
Ja, der Grund dafür war dass ich neue ActionEvents definieren will. Jedes ActionEvent hat ja eine int als ID. Da nur eine endliche Anzahl an ActionEvents geben soll und ints nicht so leserlich sind wie Enums, dacht ich könnt ich Enums benutzen. Da war aber das Problem mit dem Vergleich zwischen Enums und ints.

Wie auch immer. Habs nun so gelöst, dass ich keine echten Enums benutze, sondern die Pseudonotation vor der Enum-Zeit, sprich public static final int BEZEICHNER = 1, usw.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben