我有一个哈希映射,其值如下: 地图{键:1,值:男, 重点:2,值:女, 关键:3,价值:未知, 键:4,值:OTHER }
我想将此地图转换为enum pojo文件,如下所示:
public enum Gender {
MALE(1), FEMALE(2), UNKNOWN(3), Other(4);
private int val;
Gender (int val)
{
this.val = val;
}
public int getVal(){
return this.val;
}
};
public Gender getValue(){
return value;
}
public void setValue(Gender value){
this.value = value;
}
public TestEnumPrac(Gender value)
{
this.value = value;
}
我尝试了一些方法,但没有达到我想要的效果。 任何人都可以建议如何实现这一目标,解决这个问题的最佳方法是什么。
答案 0 :(得分:0)
你非常接近,但可能过于复杂或误解了一些概念:
};
getVal
和getValue
)public TestEnumPrac(Gender value)
CORRECT ENUM
public enum GENDER {
MALE(1), FEMALE(2), UNKNOWN(3), OTHER(4);
private int val;
GENDER(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
<强> TEST:强>
public static void main(String[] args) {
for (GENDER G : GENDER.values()) {
System.out.println(G.name() + " = " + G.getVal());
G.setVal(2 * G.getVal());
System.out.println("MODIFIED" + G.name() + " = " + G.getVal());
}
}
<强>结果:强>
MALE = 1
MODIFIED MALE = 2
FEMALE = 2
MODIFIED FEMALE = 4
UNKNOWN = 3
MODIFIED UNKNOWN = 6
OTHER = 4
MODIFIED OTHER = 8
答案 1 :(得分:0)
以Jordi的代码为起点,添加此方法以从整数映射到GENDER
个对象。
public static GENDER fromInt(int value) {
for (gender GENDER : GENDER.values()) {
if (gender.getVal() == value) {
return gender;
}
}
throw new IllegalArgumentException("Unmappable value (" + value + ")");
}
请注意,更有效的方法是创建并填充HashMap<Integer, Gender>
并使用它来进行映射。或者甚至只是一个简单的GENDER
对象数组。但是,如果有setVal
方法可以更改val
对象的GENDER
属性,则这些方法无法正常工作。
提示:摆脱setVal
。它不太可能有用,而且可能很危险。