Java枚举一般用于有固定范围的变量,例如一周只有七个变量,星期一到星期日,星期八是不存在的。
把相关的常量分组到一个枚举类型里,可以使我们的代码可读性更强,而且枚举提供了比常量更多的方法。
用法1:
public enum Direction {
East, West, South, North
}
标识符East,South称为枚举常量。枚举常量隐式声明为Direction的公共静态最终成员。
创建该枚举类型的变量不需要像创建对象那样new,而赋值也只能从枚举的值中取值。
Direction dir = Direction.East;
枚举比较用例:
enum Direction {
East, South, West, North
}
public class Main {
public static void main(String args[]) {
Direction dir = Direction.South;
System.out.println("Value of dir: " + dir);
dir = Direction.South;
if (dir == Direction.South){
System.out.println("枚举相等.\n");
}
}
}
用法2:
枚举值也可以用于控制switch语句。
enum Direction {
East, South, West, North
}
public class Main {
public static void main(String args[]) {
Direction dir = Direction.South;
switch (dir) {
case South:
System.out.println("south");
break;
case East:
System.out.println("East");
break;
case West:
System.out.println("West");
break;
case North:
System.out.println("North.");
break;
}
}
}
3.枚举中values和valueOf方法
values()方法用于获得枚举全部值,valueOf(str)传入枚举的str值获得枚举类型的值
enum Direction {
East, South, West, North
}
public class Main {
public static void main(String args[]) {
Direction all[] = Direction.values();
for (Direction a : all){
System.out.println(a);
}
System.out.println();
Direction dir = Direction.valueOf("South");
System.out.println(dir);
}
}
4.枚举定义方法
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
类似于class,枚举中科院定义成员变量还有构造方法。