Java枚举

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值