Все перечисления реализуют интерфейс Enum, поэтому вы можете, конечно, написать метод, который возвращает перечисление таким образом. Но этот метод вернет одно значение перечисления. Невозможно вернуть общее значение, которое охватывает весь список (кроме возвращения класса и отражения). Однако вы можете вернуть все значения перечисления, которые более или менее то, что вы хотите, я думаю.
enum Resources { ONE, TWO, THREE }
private Enum<?>[] resources() {
return Resources.values();
}
Одним из преимуществ такого подхода является то вы можете вернуть больше или меньше значение, например:
enum Resources { ONE, TWO, THREE }
enum MoreResources { UN, DEUX, TROIS }
private Enum<?>[] resources() {
List<Enum<?>> resources = new ArrayList<Enum<?>>();
resources.addAll(Arrays.asList(Resources.values());
resources.addAll(Arrays.asList(MoreResources.values());
return resources.toList(new Enum<?>[] {});
}
даже лучше подхода, который является более типизированным должны иметь перечисления интереса реализовать общий интерфейс например
public interface Resources {}
enum SomeResources implements Resources { ONE, TWO, THREE }
enum MoreResources implements Resources { UN, DEUX, TROIS }
private Resources[] resources() {
List<Resources> resources = new ArrayList<Resources>();
resources.addAll(Arrays.asList(Resources.values());
resources.addAll(Arrays.asList(MoreResources.values());
return resources.toList(new Resources[] {});
}
Для обеспечения дополнительной функциональности вы можете добавить дополнительные методы в интерфейс.
Вы хотите вернуть тип «Enum» или значение «Enum»? – jjnguy
Я не уверен, что название вопроса является наиболее подходящим. Что вы на самом деле хотите сделать? –
Извините за замешательство, и я, конечно, мог ошибиться в том, что я пытаюсь добиться (мое мышление начинается в конце дня), но я подумал, что мне может понравиться, что метод возвращает общий элемент Enum * not * из Enum. –