假设我有一个类似于以下的枚举结构
public enum MyItems {
pc("macbook"),
phone("nokia"),
food("sandwich"),
animal("dog");
private String item;
MyStuff(String stf) {
item = stf;
}
public String identify() {
return item;
}
}
现在,假设我想知道我拥有的项目是什么“类型”。例如,在“macbook”的情况下,这将产生pc。同样,“三明治”代表食品。
我有以下for循环来检查String是否属于枚举:
String currentItem; //Some arbitrary string, such as "macbook"/"nokia", etc.
for(MyStuff stuff : MyStuff.values()) {
if(stuff.identify().equals(currentItem)) {
//PRINT OUT:
//currentItem + " is a " + pc/phone/food/animal
}
}
也就是说,我如何从枚举值的参数到它所代表的枚举值“type”。
这是所需的输出:
currentItem = "nokia"
>>>> nokia is a [phone]
答案 0 :(得分:2)
您可以在枚举中添加一个启示查找方法:
public enum MyItems {
...
public static MyItems resolve(String name) {
for (MyItems item : values()) {
if (item.identify().equals(name)) {
return item;
}
}
return null;
}
}
用法:
String currentItem = "nokia";
MyItems item = MyItems.resolve(currentItem);
System.out.println(currentItem + " is a [" + item + "]");
答案 1 :(得分:1)
要使用当前代码获取所需的打印语句,只需使用:
String currentItem = "nokia"; //Some arbitrary string, such as "macbook"/"nokia", etc.
for(MyStuff stuff : MyStuff.values()) {
if(stuff.identify().equals(currentItem)) {
System.out.println(currentItem + " is a " + stuff);
}
}
编辑:话虽如此,你可能应该像Peter建议的那样将其移到MyStuff
。
答案 2 :(得分:0)
您可以在switch语句中使用枚举,这使得它们非常快速且易于阅读。
for (MyStuff thing : getStuff()) {
switch (thing): {
case phone: //something
case pc: //something else
default: //none
}