我有一个枚举,我想用枚举存储一些信息。例如,这就是我所拥有的:
public enum MapName {
NONE,
CASTLE,
ISLANDS,
}
我希望能够调用像
这样的函数MapName.NONE.get()
获取MapName的值。理想情况下,我想存储多个值。这是可能的,还是我必须使用if语句创建一个单独的类来返回适当的变量?
答案 0 :(得分:1)
将额外信息与枚举相关联非常容易。请记住,每个枚举值只有一个实例,因此也存在与之关联的每条额外信息。
public enum MapName {
NONE("map1"), CASTLE("map2"), ISLANDS("map3");
private final String mapName;
private MapName(String mapName) {
this.mapName = mapName;
}
public String get() {
return mapName;
}
}
答案 1 :(得分:1)
enum
基本上是完整的类。您可以定义变量,构造函数(仅限私有),方法,静态方法,抽象方法等:
public enum MapName {
NONE, CASTLE, ISLANDS;
private String name;
private MapName(String name) { this.name = name; }
public String getName() { return name; }
public static String getName(MapName instance) { return instance.getName(); }
}
您还可以定义每个实例的方法:
public enum MapName {
NONE {
@Override
public String getName() {
return "NONE";
}
},
CASTLE, // same thing for these other enums
ISLANDS;
public abstract String getName();
}
答案 2 :(得分:1)
您可以拥有枚举商店值。看看这是否有意义:
public enum MapName {
NONE("None"),
CASTLE("Castle"),
ISLANDS("Islands");
private String value;
MapName(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
Java枚举具有高级功能,可以使它们的行为类似于具有一组静态值的静态类。使用此功能,您只需添加更多参数即可为每个枚举值添加任意数量的值!
您可以像以下一样使用它:
MapName.NONE.getValue(); //Returns "None"
答案 3 :(得分:0)
以上答案足以理解枚举。现在您的要求枚举就像常量一样,您不能将多个值存储到枚举变量中。如果您希望枚举名称相同但值应该不同,请使用具有相同变量的不同枚举类。