Java: instantiating an enum using reflection

前端 未结 5 1459
甜味超标
甜味超标 2020-12-08 09:07

Suppose you have a text file like:

my_setting = ON
some_method = METHOD_A
verbosity = DEBUG
...

That you wish to to update a corresponding

5条回答
  •  自闭症患者
    2020-12-08 09:56

    You may code your Enum similar tho this:

    public enum Setting {
    
        ON("ON"),OFF("OFF");
    
        private final String setting;
    
        private static final Map stringToEnum = new ConcurrentHashMap();
        static {
            for (Setting set: values()){
                stringToEnum.put(set.setting, set);
            }
        }
    
        private Setting(String setting) {
            this.setting = setting;
        }
    
        public String toString(){
            return this.setting;
        }
    
        public static RequestStatus fromString(String setting){
            return stringToEnum.get(setting);
        }   
    }
    

    Then you may easily create Enum from String without reflection:

    Setting my_settings = Setting.fromString("ON");
    

    This solution is not originated from myself. I read it from somewhere else, but I can't recall the source.

提交回复
热议问题