使用枚举存储并获取静态值

时间:2014-05-24 03:55:40

标签: java enums

我有一个枚举,我想用枚举存储一些信息。例如,这就是我所拥有的:

public enum MapName {
    NONE,
    CASTLE,
    ISLANDS,
}

我希望能够调用像

这样的函数
MapName.NONE.get()

获取MapName的值。理想情况下,我想存储多个值。这是可能的,还是我必须使用if语句创建一个单独的类来返回适当的变量?

4 个答案:

答案 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)

Java中的

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)

以上答案足以理解枚举。现在您的要求枚举就像常量一样,您不能将多个值存储到枚举变量中。如果您希望枚举名称相同但值应该不同,请使用具有相同变量的不同枚举类。