假設我有各種枚舉類型,每個枚舉類型都有一些常量: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
提交
取消