所有枚举都实现了接口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