Case-insensitive matching of a string to a Java enum

后端 未结 9 1562
独厮守ぢ
独厮守ぢ 2020-12-24 10:59

Java provides a valueOf() method for every Enum object, so given an enum like

public enum Day {
         


        
9条回答
  •  庸人自扰
    2020-12-24 11:25

    I found getting the special blend of generics a little tricky, but this works.

    public static > T searchEnum(Class enumeration,
            String search) {
        for (T each : enumeration.getEnumConstants()) {
            if (each.name().compareToIgnoreCase(search) == 0) {
                return each;
            }
        }
        return null;
    }
    

    Example

    public enum Horse {
        THREE_LEG_JOE, GLUE_FACTORY
    };
    
    public static void main(String[] args) {
        System.out.println(searchEnum(Horse.class, "Three_Leg_Joe"));
        System.out.println(searchEnum(Day.class, "ThUrSdAy"));
    }
    

提交回复
热议问题