Так, что у меня есть простое перечисление и класс, который использует это:класса, реализующий интерфейс, который принимает перечисление
enum ThingType { POTATO, BICYCLE };
class Thing {
public void setValueType(ThingType value) { ... }
public ThingType getValueType() { ... }
}
Но, на самом деле, у меня есть много разных классов, которые реализуют setValueType, каждый с другим видом перечисления. Я хочу, чтобы сделать интерфейс, что эти классы могут реализовать, что поддерживает setValueType и getValueType с использованием дженериков:
interface ValueTypeable {
public Enum<?> getValueType(); // This works
public <T extends Enum<T>> setValueType(T value); // this fails horribly
}
Я не могу изменить модель класса, потому что классы автоматически генерируется из схемы XML (JAXB). Я чувствую, что я не хватаю перечислений и дженериков вместе взятых. Цель здесь заключается в том, что я хочу, чтобы позволить пользователю выбирать из списка перечислений (как я уже знаю тип во время выполнения) и устанавливать значение в конкретном классе.
Спасибо!
Вероятно, нет необходимости беспокоиться о 'Enum' в поле. –
Это определенно работает, но генератор кода для jaxb-интерфейсов не поддерживает обобщенные интерфейсы. Однако это не так сложно исправить. – lucasmo