如何从名称中获取任意枚举的实例作为字符串

假设我有各种枚举类型,每个枚举类型都有一些常量:


public enum MyEnum1 {


ConstantA(),

ConstantB(),

ConstantC();


}


public enum MyEnum2 {


ConstantA(),

ConstantB(),

ConstantC();


}

我如何从这些枚举的名称中任意获取其中一个枚举的实例,以便我可以继续调用Enum.values()。


就像是: Enum<?> myEnumInstance = //something


目标是根据用户文本输入调用.values()以查找和检索所述任意常量内的数据。enum


白板的微信
浏览 78回答 1
1回答

料青山看我应如是

如果您的枚举类型存储旨在多态访问的数据,那么它们应该实现适当的接口。假设此数据是单个数据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());}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java