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