Trzeba mieć wspólny dla dwóch supertypem teksty stałe, jeśli chcesz zadeklarować mapę gdzie wystąpienie dwóch typów może być kluczem. Mapa może mieć tylko jeden typ klucza, ale jeśli masz jeden typ z dwoma podtypami, to jest w porządku.
Nie można zmienić klasy nadrzędnej dla wyliczeń (zawsze jest to java.lang.Enum
), ale można je zaimplementować w interfejsach. Więc co można zrobić to w ten sposób:
interface FruitOrVegetable {
}
enum Fruit implements FruitOrVegetable {
}
enum Vegetable implements FruitOrVegetable {
}
class MyClass {
Map<FruitOrVegetable, String> myMap;
}
Pytanie brzmi: co to jest wspólne zachowanie teksty stałe owocowych i warzywnych, które można włączyć w interfejsie. Interfejs bez zachowania jest całkiem bezcelowy. Ciągle trzeba wykonywać kontrole i rzutki, aby traktować coś jako Fruit
lub .
Być może w twoim przypadku potrzebujesz pojedynczej enum FruitOrVegetable
- jeśli chcesz móc traktować je zamiennie.
Proponuję użyć EnumMap zamiast HashMap, ponieważ jest zoptymalizowany dla map z wyliczenia jako kluczy. –