1、枚举类的定义
public enum PlayerType {
TENNIS,
FOOTBALL,
BASKETBALL
}
2、内部枚举
其可以定义在一个类的内部,这样它的作用域就可以限定于这个外部类中使用。
public class Player {
private PlayerType type;
public enum PlayerType {
TENNIS,
FOOTBALL,
BASKETBALL
}
public boolean isBasketballPlayer(){
return getType() == PlayerType.BASKETBALL;
}
public PlayerType getType(){
return type;
}
public void setType(PlayerType type){
this.type = type;
}
}
PlayerType 就相当于 Player 的内部类,isBasketballPlayer() 方法用来判断运动员是否是一个篮球运动员。
由于枚举是 final 的,可以确保在 Java 虚拟机中仅有一个常量对象,所以我们可以很安全的使用 “ == ” 运算符来比较两个枚举是否相等,参照 isBasketballPlayer() 方法。
“ == ” 运算符比较的时候,如果两个对象都为 null,并不会发生 NullPointerException,而 equals() 方法则会。另外 “ == ” 运算符会在编译时进行检查,如果两侧的类型不匹配,会提示错误,而 equals() 方法则不会。
3、 枚举可用于 switch 语句
switch (playerType) {
case TENNIS:
return "网球运动员费德勒";
case FOOTBALL:
return "足球运动员C罗";
case BASKETBALL:
return "篮球运动员詹姆斯";
case UNKNOWN:
throw new IllegalArgumentException("未知");
default:
throw new IllegalArgumentException(
"运动员类型: " + playerType);
}
4、枚举可以有构造的方法
public enum PlayerType {
TENNIS("网球"),
FOOTBALL("足球"),
BASKETBALL("篮球");
private String name;
PlayerType(String name) {
this.name = name;
}
}