How to create a map with enum values in java?

时间:2018-12-19 11:27:09

标签: java string dictionary enums

I need to validate the value of a parameters passed as part of REST API. These parameters are a fixed set of values. I thought of using a map having parameter name as key and enum as value. So I can check if the value sent in REST API is one of the enum keys.

But I am not able to create a Map with String key and enum value in java, tried creating Map and then putting and enum as value, but it fails.

class Validation {
    enum Type {
        INTERNAL,
        EXTERNAL
    }; 
}

Map<String, Object> validationMap = new HashMap<String, Object>();
validationMap.put("type", Validation.Type);

This is throwing an error that type is not defined.

2 个答案:

答案 0 :(得分:6)

This is probably what you're looking for, Map<String, Object> is changed to Map<String, Validation.type>:

Map<String, Validation.type> validationMap = new HashMap<String, Validation.type>();
validationMap.put("type", Validation.type.INTERNAL);
validationMap.put("type2", Validation.type.EXTERNAL);

Your original code would have worked, if you had changed Validation.type to Validation.type.INTERNAL for example, however your validationMap map allows the storage of any Object, so validationMap.put("type2", 123.123); would also have worked, which is unlikely to be something you want.

答案 1 :(得分:0)

Is this what you need?

Map<String, List<Validation.type>> validationMap = new HashMap<>();
validationMap.put("type", 
   Arrays.asList(Validation.type.EXTERNAL,Validation.type.INTERNAL));