19 枚举类型

19 枚举类型

19.1 基本enum特性

创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum。

19.4 values()的神秘之处

由于values()方法是由编译器插入到enum定义中的static方法,所以如果你将enum实例向上转型为Enum,那么values()方法就不可访问了。不过,在Class中有一个getEnumConstants()方法,所以即便Enum接口中没有values()方法,我们仍然可以通过Class对象取得所有enum实例:

enum Search {HITHR,YOU}
public class UpCastEnum{
    public static void main(String[] args){
        Search[] vals = Search.values();
        Enum e =Search.HITHER; // Upcast
        // e.values(); // No values() in Enum
        for(Enum en:e.getClass().getEnumConstants()){
            sys.out(en)
        }
    }
}

/*
Output:
HITHER,YOU
*/

19.7 使用接口组织枚举

在一个接口的内部,创建实现该接口的枚举,以此将元素进行分类,可以达到将枚举元素分类组织的目的。

如果enum类型实现了Food接口,那么我们就可以将其实例向上转型为Food,所以上例中的所有类型都是Food。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值