作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 Java 中使用 Enums 时遇到问题。我已阅读有关将值参数分配给枚举的文档。但是,我的问题是多个值怎么办,有可能吗?
这是我想要实现的:我有一个语言枚举。每种语言都由其名称和一些较短的别名表示(并非总是,而且别名的数量并不总是相同)
这是一个例子:
public enum Language{
English("english", "eng", "en", "en_GB", "en_US"),
German("german", "de", "ge"),
Croatian("croatian", "hr", "cro"),
Russian("russian")
}
我可以像这样定义一个枚举并通过调用 Language.valueOf() 来获取正确的枚举值吗???
最佳答案
这可能与您想要实现的目标相似。
public enum Language{
English("english", "eng", "en", "en_GB", "en_US"),
German("german", "de", "ge"),
Croatian("croatian", "hr", "cro"),
Russian("russian");
private final List<String> values;
Language(String ...values) {
this.values = Arrays.asList(values);
}
public List<String> getValues() {
return values;
}
}
记住枚举和其他枚举一样是一个类; English("english", "eng", "en", "en_GB", "en_US")
正在调用枚举构造函数。
然后你可以通过搜索方法检索到一个字符串对应的枚举值(你可以再次将它作为一个静态方法放在枚举中)。
public static Language find(String name) {
for (Language lang : Language.values()) {
if (lang.getValues().contains(name)) {
return lang;
}
}
return null;
}
关于具有多个值的Java枚举valueOf()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4197988/
我是一名优秀的程序员,十分优秀!