我想将枚举变量声明为值.我怎样才能做到这一点?
例如:
public enum CardSuit {
SPADE(0), HEART(1), DIAMOND(2), CLUB(3);
}
Run Code Online (Sandbox Code Playgroud)
我可以这样声明:
CardSuit s = CardSuit.SPADE;
Run Code Online (Sandbox Code Playgroud)
我也想这样声明:
CardSuit s = 1;
Run Code Online (Sandbox Code Playgroud)
这样做的方法是什么?这甚至可能吗?
我想你想要这样的东西,
public static enum CardSuit {
SPADE(0), HEART(1), DIAMOND(2), CLUB(3);
int value;
CardSuit(int v) {
this.value = v;
}
public String toString() {
return this.name();
}
}
public static void main(String[] args) {
CardSuit s = CardSuit.values()[0];
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
输出是
SPADE
Run Code Online (Sandbox Code Playgroud)
编辑
如果你想按指定的值搜索,你可以用这样的东西来做 -
public static enum CardSuit {
SPADE(0), HEART(1), DIAMOND(4), CLUB(2);
int value;
CardSuit(int v) {
this.value = v;
}
public String toString() {
return this.name();
}
public static CardSuit byValue(int value) {
for (CardSuit cs : CardSuit.values()) {
if (cs.value == value) {
return cs;
}
}
return null;
}
}
public static void main(String[] args) {
CardSuit s = CardSuit.byValue(2);
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
输出是
CLUB
Run Code Online (Sandbox Code Playgroud)