为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白板的微信 2023-09-20 19:13:18
假设我有各种枚举类型,每个枚举类型都有一些常量: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());

}


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信