Все перечисления реализуют интерфейс Enum, поэтому вы, безусловно, можете написать метод, который возвращает перечисление таким образом. Но этот метод вернет одно значение перечисления. Нет никакого способа вернуть универсальное значение, которое охватывает все перечисление (кроме возвращения класса и выполнения отражения). Тем не менее, вы можете вернуть все значения 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[] {});
}
Вы можете добавить дополнительные методы в интерфейс для обеспечения большей функциональности.