如何在java中创建带枚举值的地图?

Pra*_*eep 1 java string enums dictionary

我需要验证作为REST API的一部分传递的参数的值.这些参数是一组固定的值.我想过使用一个参数名为key,枚举为值的地图.所以我可以检查REST API中发送的值是否是枚举键之一.

但是我无法在java中创建一个带有String键和枚举值的Map,尝试创建Map然后将put和enum作为值,但它失败了.

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

Map<String, Object> validationMap = new HashMap<String, Object>();
validationMap.put("type", Validation.Type);
Run Code Online (Sandbox Code Playgroud)

这是抛出未定义类型的错误.

Mar*_*ark 6

这可能是你正在寻找的,Map<String, Object>改为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);
Run Code Online (Sandbox Code Playgroud)

你的原始代码会有用,如果你已经改变Validation.typeValidation.type.INTERNAL,例如,你的validationMap地图允许存储任何 Object,所以validationMap.put("type2", 123.123);也可以工作,这不太可能你想要的东西.