我有一些看起来像这样的C ++代码:
enum {
FOO = 0x01,
BAR = 0x09;
};
switch (baz) {
case FOO:
{
//...
}
break;
case BAR:
{
//...
}
break;
}
是否可以在Java中复制此行为?
答案 0 :(得分:4)
是的,Java有枚举:
public enum BazEnum {
FOO(0x01),
BAR(0x09);
private int value;
BazEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static BazEnum fromValue(int value) {
for (BazEnum curenum : BazEnum.values()) {
if (curenum.getValue() == value) {
return curenum;
}
}
return null;
}
}
public class MainClass {
public static void main(String[] params) {
BazEnum baz = BazEnum.fromValue(0x09);
switch baz {
case FOO:
...
break;
case BAR:
...
break;
default:
...
break;
}
}
}
答案 1 :(得分:1)
查看Java Tutorial on Enum Types,其中包含构建枚举的示例,并在switch语句中使用它们。
答案 2 :(得分:0)
当然,只需给枚举一个名字:
enum Baz
{
FOO, BAR;
}
然后您可以切换Baz
类型的表达式:
switch (baz)
{
case FOO:
{
}
break;
case BAR:
{
}
break;
}
如果您愿意,仍然可以将FOO
和BAR
与值1和9相关联:
enum Baz
{
FOO(0x01), BAR(0x09);
Baz(int value)
{
this.value = value;
}
public final int value;
}
然后您可以说baz.value
来获取相关值。
答案 3 :(得分:0)
public enum Enum{
FOO(0x01),
BAR(0x09);
Enum(int value){
this.value=value;
}
private int value;
};
public void test() {
Enum testEnum = null;
switch(testEnum){
case FOO:{}break;
case BAR:{}break;
}
}
答案 4 :(得分:0)
虽然Java有枚举,但它们是对象而不是原始对象。使用常量
可能更简单static final int
FOO = 0x01,
BAR = 0x09;
switch (baz) {
case FOO:
//...
break;
case BAR:
//...
break;
}
答案 5 :(得分:-1)
只需创建一个枚举xDD
public enum EnumName { Foo(),Bar(); } switch (baz) { case : EnumName.Foo code break; }