Vergleichen Sie Java-Enum-Werte
Gibt es eine Möglichkeit zu überprüfen, ob ein enum-Wert ist größer/gleich " auf einen anderen Wert?
Möchte ich prüfen, ob eine Ebene Fehler ist 'Fehler oder höher'.
InformationsquelleAutor der Frage ripper234 | 2009-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle Java-enums implementiert Vergleichbar: http://java.sun.com/javase/6/docs/api/java/lang/Enum.html
Können Sie auch die
ordinal
Methode, um Sie inint
s, dann ist der Vergleich trivial ist.InformationsquelleAutor der Antwort Chris Vest
Einer version, die ist viel ausdrucksstärker wäre
oder
Diese Weise können Sie festlegen, die Reihenfolge in der Enum und ändern kann die Umsetzung intern wenn Sie möchten. Nun den Kunden von der Enum können die Werte zu vergleichen, ohne zu wissen, alle details zu erfahren.
Einer möglichen Umsetzung whould werden
Ich würde auch nicht empfehlen die Verwendung der Ordnungszahl () - Methode für den Vergleich, denn wenn jemand ändert die Reihenfolge, in der die Enum-Werte sind definiert, die Sie bekommen konnte, es zu unerwartetem Verhalten.
InformationsquelleAutor der Antwort Felix Reckers
Vorausgesetzt, dass Sie definiert haben, müssen Sie in der Reihenfolge der schwere, vergleichen kann man die Ordnungszahlen der einzelnen Werte. Die Ordnungszahl ist, seine position in seiner enum-Deklaration, wo die erste Konstante zugeordnet ist eine Ordinalzahl null.
Erhalten Sie die Ordnungszahl durch den Aufruf der Ordnungszahl () - Methode der Wert.
InformationsquelleAutor der Antwort Rich Seller
Solch ein enum sollte ein level zugeordnet. So finden Sie gleich oder größer, sollten Sie vergleichen die Ebenen.
Verwendung von ordinalen beruht auf der Reihenfolge der enum-Werte angezeigt. Wenn Sie auf diese angewiesen sind, sollten Sie dokumentieren andernfalls ist eine solche Abhängigkeit führen kann zu spröder code.
InformationsquelleAutor der Antwort Peter Lawrey
Java enum hat schon build-in compareTo(..) Methode, die mit Hilfe des enum-position (auch Ordnungszahl) zum vergleichen von einem Objekt zum anderen. Die position wird bestimmt, basierend auf der Reihenfolge, in der die enum Konstanten deklariert werden
wobei die erste Konstante zugeordnet ist eine Ordinalzahl null.
Wenn diese Vereinbarung nicht geeignet ist, müssen Sie möglicherweise definieren Sie eigene Komparator durch das hinzufügen von internen Bereich(en) wie unten gezeigt:
Fahrer um zu überprüfen, ob alles funktioniert:
InformationsquelleAutor der Antwort MaxZoom
Andere option wäre
Ihre Frage, ich bin davon ausgegangen, dass Sie mit enum zu benennen, die irgendeine Art von return-Wert, von denen einige Fehler gibt. Diese Implementierung hat den Vorteil, nicht zu müssen, fügen Sie die neue Rückgabe-Typen in einem bestimmten Ort (und dann passen Sie Ihren test Wert), hat aber den Nachteil, dass einige zusätzliche Arbeit in der Initialisierung der enum.
Verfolgt meine Vermutung ein bisschen weiter, sind Fehler-codes etwas für die user? Ein debugging-tool? Wenn es letzteres ist, ich habe das exception-handling-system ziemlich gut für Java.
InformationsquelleAutor der Antwort Carl