Java 简单整数枚举
我是Java 简单整数枚举,java,enums,Java,Enums,我是enums的新手,我想创建一个来比较整数和更容易理解的定义 if (getFruit() == myEnum.APPLE) { // ... } 而不是 if (getFruit() == 1) { // ... } 其中getFruit()返回值,如1、2等您可以使用getFruit()==myEnum.APPLE.ordinal()其中ordinal是您在文件中声明枚举的顺序 public enum myEnum { APPLE, ORANGE, BANAN
enums的新手,我想创建一个来比较整数和更容易理解的定义
if (getFruit() == myEnum.APPLE) {
// ...
}
而不是
if (getFruit() == 1) {
// ...
}
其中getFruit()
返回值,如1
、2
等您可以使用getFruit()==myEnum.APPLE.ordinal()
其中ordinal是您在文件中声明枚举的顺序
public enum myEnum {
APPLE, ORANGE, BANANA;
}
在这种情况下,苹果的序号是0,橙色是1,香蕉是2
或者您可以执行以下操作:
public enum myEnum {
APPLE(1), ORANGE(2), BANANA(3);
private final int i;
private myEnum(int i){
this.i=i;
}
public int getNumber(){
return i;
}
}
但是,我只需要让getFruit()
返回一个枚举。您可以创建这样的枚举
public enum myEnum {
APPLE (1),
ORANGE (2);
}
您也可以检查此项您缺少枚举点。。。您可以使用它们而不是“旧式”int
常量
看看这个:
public enum Fruit {
APPLE,
ORANGE,
BANANA
}
public class Dessert {
private Fruit fruit;
public Dessert(Fruit fruit) {
this.fruit = fruit;
}
public Fruit getFruit() {
return fruit;
}
}
public class Test {
Dessert dessert = new Dessert(Fruit.APPLE);
if (dessert.getFruit() == Fruit.ORANGE) {
// nope
} else if (dessert.getFruit() == Fruit.APPLE) {
// yep
}
}
getFruit必须返回水果枚举
public Fruit getFruit() {
return aFruit;
}
现在你可以使用
if (getFruit() == Fruit.APPLE) { //and so on
// ...
}
如果使用enum,最好使用switch case
switch(getFruit()) {
case Fruit.APPLE: ... break;
case Fruit.ORANGE: ... break;
}
当然,真正的解决方案是让getFruit
返回一个myEnum
。因此,如果我让getFruit()
返回一个枚举,我如何使用整数索引引用枚举return fruit.getValue(i)
或类似的东西?在本例中,您应该包括构造函数。否则,导致错误代码的复制可能会使OP和其他不了解使用enum
的复杂性的人感到困惑。谢谢,现在我不那么困惑了V:
switch(getFruit()) {
case Fruit.APPLE: ... break;
case Fruit.ORANGE: ... break;
}