Java 枚举不存储新数据
Java enum doesnt store new data
我创建了一个小的 class 用于联系我们的内部 API。
我没有创建新连接和传递参数,而是使用 class 完成所有工作。
枚举是这样的
public enum EnumTypes {
UpdateA("update",PostGetEnum.Post),
UpdateB("update2",PostGetEnum.Post);
private Map<String, String> values=new HashMap<String, String>();
....
public void addValues(String name,String value) {
values.put(name, value);
}
public Map<String, String> getValues() {
return values;
}
}
所以我正在创建一个这样的对象
EnumTypes test = EnumTypes.UpdateA;
test.addValues("id", "1");
它工作得很好,除了我刚刚注意到的一些东西。当我像这样创建第二个对象时
EnumTypes test2 = EnumTypes.UpdateA;
test2.addValues("id", "2");
他们都有相同的id。
System.out.println(test.getValues());
System.out.println(test2.getValues());
2
2
我做错了什么吗?
Enum 实例是 static
所以在 class-loading 时间只能创建一个实例,也许 Enum 不是你想要的。
考虑像使用 final static
字段一样使用枚举
我创建了一个小的 class 用于联系我们的内部 API。 我没有创建新连接和传递参数,而是使用 class 完成所有工作。 枚举是这样的
public enum EnumTypes {
UpdateA("update",PostGetEnum.Post),
UpdateB("update2",PostGetEnum.Post);
private Map<String, String> values=new HashMap<String, String>();
....
public void addValues(String name,String value) {
values.put(name, value);
}
public Map<String, String> getValues() {
return values;
}
}
所以我正在创建一个这样的对象
EnumTypes test = EnumTypes.UpdateA;
test.addValues("id", "1");
它工作得很好,除了我刚刚注意到的一些东西。当我像这样创建第二个对象时
EnumTypes test2 = EnumTypes.UpdateA;
test2.addValues("id", "2");
他们都有相同的id。
System.out.println(test.getValues());
System.out.println(test2.getValues());
2
2
我做错了什么吗?
Enum 实例是 static
所以在 class-loading 时间只能创建一个实例,也许 Enum 不是你想要的。
考虑像使用 final static
字段一样使用枚举