У меня есть эти два Перечисления объявлены таковые:Instantiate EnumSet от одного из двух типов Enum
public enum EnumOne implements EnumInterface {
SomethingHere,
SomethingThere;
public void someMethod() { }
}
public enum EnumTwo implements EnumInterface {
SomethingOverYonder;
public void someMethod() { }
}
Как видно здесь, оба они реализуют этот интерфейс.
public Interface EnumInterface {
someMethod();
}
У меня есть класс, определенный здесь, который содержит EnumSet, который будет получать все элементы из любого enum1 или Enum2. Это будет определено с помощью метода, который имеет индекс как параметр. Что-то вроде этого:
public class SomeClass {
private EnumSet someEnum;
public void setEnumType (int index) {
switch (index) {
case 1:
someEnum = EnumSet.allOf(EnumOne.class);
break;
case 2:
someEnum = EnumTwo.allOf(EnumTwo.class);
break;
}
}
}
Теперь я знаю, что я должен использовать дженерики для достижения этой цели как-то, но я не знаю, как сделать это точно, так как я не достаточно хорошо знаком с ним, и я надеюсь, вы можете немного просветить меня.
Заранее благодарим за ответы.
Btw enum не может использоваться как имя переменной. – Mordechai
@MouseEvent Спасибо за примечание, я отредактирую это, хотя идея того, что я хочу делать, все равно натолкнулась на все, что я думаю. – ShadowGeist
Если позже вы хотите использовать специальные методы EnumSet, это не сработает, поскольку у вас не может быть подходящего параметра типа для вашего объявления 'someEnum'. Если вы просто используете его как 'Set', то просто' Set someEnum = new HashMap <> (EnumSet.allOf (EnumOne.class)); '. Тем не менее, я считаю, что это принципиально неправильно в дизайне ... Вы можете сказать нам, почему вы хотите сделать что-то вроде этого –