Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中创建带有枚举值的映射?_Java_String_Dictionary_Enums - Fatal编程技术网

如何在java中创建带有枚举值的映射?

如何在java中创建带有枚举值的映射?,java,string,dictionary,enums,Java,String,Dictionary,Enums,我需要验证作为RESTAPI一部分传递的参数的值。这些参数是一组固定的值。我考虑使用一个映射,将参数名作为键,枚举作为值。因此,我可以检查RESTAPI中发送的值是否是枚举键之一 但我无法在java中创建带有字符串键和枚举值的映射,尝试创建映射,然后将和枚举作为值,但失败了 class Validation { enum Type { INTERNAL, EXTERNAL }; } Map<String, Object> valid

我需要验证作为RESTAPI一部分传递的参数的值。这些参数是一组固定的值。我考虑使用一个映射,将参数名作为键,枚举作为值。因此,我可以检查RESTAPI中发送的值是否是枚举键之一

但我无法在java中创建带有字符串键和枚举值的映射,尝试创建映射,然后将和枚举作为值,但失败了

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

Map<String, Object> validationMap = new HashMap<String, Object>();
validationMap.put("type", Validation.Type);
类验证{
枚举类型{
内部的
外部的
}; 
}
Map validationMap=newhashmap();
validationMap.put(“type”,Validation.type);

这引发了一个类型未定义的错误。

这可能就是您要查找的,
Map
更改为
Map

Map validationMap=newhashmap();
validationMap.put(“type”,Validation.type.INTERNAL);
validationMap.put(“type2”,Validation.type.EXTERNAL);


例如,如果您将
Validation.type
更改为
Validation.type.INTERNAL
,您的原始代码本来可以工作,但是
validationMap
map允许存储任何
对象,因此
validationMap.put(“type2”,123.123)也会起作用,这不太可能是您想要的。

这可能是您正在寻找的,
Map
更改为
Map

Map validationMap=newhashmap();
validationMap.put(“type”,Validation.type.INTERNAL);
validationMap.put(“type2”,Validation.type.EXTERNAL);

例如,如果您将
Validation.type
更改为
Validation.type.INTERNAL
,您的原始代码本来可以工作,但是
validationMap
map允许存储任何
对象,因此
validationMap.put(“type2”,123.123)也会起作用,这不太可能是您想要的。

这就是您需要的吗

Map<String, List<Validation.type>> validationMap = new HashMap<>();
validationMap.put("type", 
   Arrays.asList(Validation.type.EXTERNAL,Validation.type.INTERNAL));
Map validationMap=newhashmap();
validationMap.put(“类型”,
asList(Validation.type.EXTERNAL,Validation.type.INTERNAL));
这就是你需要的吗

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

你到底想做什么?例如,
Validation.type.class
将编译;但这真的能满足您的需要吗?请确保遵循Java命名约定:类和枚举名称始终以大写开头,即
类型
应该是
类型
。是否需要
映射
?Will(更正大小写)
Validation.Type.valueOf()
不起作用?@AndyTurner:Validation.Type.class解决了编译问题,但我不知道如何使用该类创建一个实例。您实际想做什么?例如,
Validation.type.class
将编译;但这真的能满足您的需要吗?请确保遵循Java命名约定:类和枚举名称始终以大写开头,即
类型
应该是
类型
。是否需要
映射
?Will(更正大小写)
Validation.Type.valueOf()
无效?@AndyTurner:Validation.Type.class解决了编译问题,但我不知道如何使用该类重新创建实例。我喜欢将enum作为值而不是enum的属性。我喜欢将enum作为值而不是enum的属性。