假设我有各种枚举类型,每个枚举类型都有一些常量:public enum MyEnum1 {ConstantA(),ConstantB(),ConstantC();}public enum MyEnum2 {ConstantA(),ConstantB(),ConstantC();}我如何从这些枚举的名称中任意获取其中一个枚举的实例,以便我可以继续调用Enum.values()。就像是: Enum<?> myEnumInstance = //something目标是根据用户文本输入调用.values()以查找和检索所述任意常量内的数据。enum
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
如果您的枚举类型存储旨在多态访问的数据,那么它们应该实现适当的接口。假设此数据是单个数据int
,那么枚举类型可能如下所示(使用IntSupplier):
public enum MyEnum1 implements IntSupplier {
ConstantA(1),
ConstantB(2),
ConstantC(3);
private final int number;
private MyEnum1(int number) { this.number = number; }
public int getAsInt() { return number; }
}
然后,您可以利用该接口来获取正确键入的枚举值(常量)列表:
IntSupplier[] myEnums = Class.forName("MyEnum1")
.asSubclass(IntSupplier.class)
.getEnumConstants();
并用它来获取值:
for(IntSupplier value : myEnums) {
System.out.println(value.getAsInt());
}
添加回答
举报
0/150
提交
取消