3 Stimmen

Java-Enum: Nehmen Sie mehrere Werte auf einmal an

Korrigiere mich, wenn ich falsch liege:

  1. enum ist ein Typ
  2. Ein Objekt eines bestimmten enum-Typs kann zur gleichen Zeit nur einen enum-Wert annehmen

Jetzt habe ich eine Frage: Angenommen, ich habe irgendwo in meinem Java-Programm ein enum definiert (oder eine andere Datenstruktur, die für die Aufgabe geeignet ist; ich kann sie nicht benennen, weil ich nach einer solchen Datenstruktur suche, um die folgende Aufgabe zu erledigen). Wenn ich irgendwie ein enum-Objekt (oder eine andere Datenstruktur) im main(String []) habe und es mehrere Werte des enum (oder einer anderen Datenstruktur) annehmen möchte, wie mache ich das? Welche geeignete Datenstruktur sollte ich verwenden, wenn es kein enum ist?

Vielen Dank im Voraus!

8voto

rlegendi Punkte 10162

Sie könnten ein einfaches Array verwenden, jede Sammlung aus dem Kern java.util API würde auch funktionieren (wie Listen oder Sets, es ist etwas bequemer als Arrays zu verwenden), aber wahrscheinlich ist das, wonach Sie suchen, EnumSet:

enum Monster {
    GOBLIN, ORC, OGRE;
}

public class Main {
    public static void main(final String[] args) {
        final EnumSet bigGuys = EnumSet.of(Monster.ORC, Monster.OGRE);

        for (final Monster act : Monster.values()) {
            System.out.println(bigGuys.contains(act));
        }
    }
}

2voto

Klingt so, als ob du entweder nach suchst:

  • java.util.EnumSet
  • Varargs: method(MyEnum ...values)
  • Ein einfaches Array: MyEnum[]

Ich bevorzuge normalerweise java.util.EnumSet selbst, es ist einfach zu verwenden und man kann schnell überprüfen, ob es einen bestimmten Wert enthält usw. Es ist auch ein Ersatz für oder von Flags.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X