Wie kann ich eine Karte deklarieren, deren Schlüssel irgendeine Aufzählung haben kann?
Zum Beispiel habe ich zwei enum Obst und Gemüse.
Wie kann ich Map deklarieren, wo der Schlüssel sowohl Obst als auch Gemüse sein kann, aber nur Enumerationen, nicht Objekt?
Ich meine, etwas wie
%Vor%Sie müssen einen gemeinsamen Supertyp für Ihre beiden Enums haben, wenn Sie eine Map deklarieren möchten, in der zwei Arten von Instanzen der Schlüssel sein können. 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 Oberklasse für Enums nicht ändern (es ist immer java.lang.Enum
), aber Sie können sie Schnittstellen implementieren lassen. Was Sie also tun können, ist dies:
Die Frage ist: Was ist das geteilte Verhalten der Enums Fruit and Vegetable, das Sie in die Oberfläche einbeziehen können? Eine Schnittstelle ohne Verhalten ist ziemlich sinnlos. Du musst ständig instanceof
checks und casts machen, um etwas als Fruit
oder Vegetable
zu behandeln.
Vielleicht brauchen Sie in Ihrem Fall eine einzige Aufzählung FruitOrVegetable
- wenn Sie in der Lage sein möchten, sie austauschbar zu behandeln.
Tags und Links java generics enums collections