Sie benötigen einen gemeinsamen Supertyp für Ihre zwei Aufzählungen haben, wenn Sie eine Karte erklären wollen, wo Instanz von zwei Typen kann der Schlüssel sein. Eine Map kann nur einen Schlüsseltyp haben, aber wenn Sie einen Typ mit zwei Subtypen haben, ist das in Ordnung.
Sie können die Superklasse für Enums nicht ändern (es ist immer java.lang.Enum
), aber Sie können sie Schnittstellen implementieren implementieren. Also, was können Sie tun, ist dies:
interface FruitOrVegetable {
}
enum Fruit implements FruitOrVegetable {
}
enum Vegetable implements FruitOrVegetable {
}
class MyClass {
Map<FruitOrVegetable, String> myMap;
}
Die Frage ist: Was ist das gemeinsame Verhalten der Aufzählungen Obst und Gemüse, die Sie in der Schnittstelle enthalten. Eine Schnittstelle ohne Verhalten ist ziemlich sinnlos. Sie müssten ständig instanceof
Prüfungen und Gussstücke machen, um etwas als Fruit
oder Vegetable
zu behandeln.
Vielleicht in Ihrem Fall brauchen Sie tatsächlich eine einzige enum FruitOrVegetable
- wenn Sie in der Lage sein möchten, sie austauschbar zu behandeln.
Ich würde vorschlagen, ein EnumMap anstelle einer HashMap zu verwenden, wie es für Karten mit Enum als Schlüssel optimiert ist. –