Think in Java总结 -- 19枚举类型

本文详细探讨了Java枚举(enum)的特性与应用,包括其实现Serializable接口、支持静态导入、作为正常类使用、在switch中直接使用、与泛型结合、实现接口、EnumSet与EnumMap的使用,以及如何利用枚举设计责任链模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 19.1 enum特性
    enum实现Serializable接口,自动添加了equals和hashCode方法
方法名称含义
enums.values()返回类元素的数组
enum.ordinal()返回次序的int值
enum.getDeclaringClass()全类名
Enum.valueOf()根据名字返回实例
  • 19.1.1 支持静态导入
  • 19.2 enum类可以作为一个正常的类
  1. enum实例必须最先定义
  2. 构造函数默认是private,可以省略,不能为别的,只能内部调用
  • 19.2.1可以覆盖修改toString方法
  • 19.3switch中使用
  1. case中可以直接写元素,不用类名来引用
  2. 在Java7中添加了对String的支持,char是ascill码,String是hashCode加equals安全检查
  • 19.4 values()方法是由编译器插入到enum定义中的静态方法,Enum中没有,Class中有一个getEnumConstants()方法可以用来获取enum中的实例,和values()方法结果相同
  • 19.5 enum是继承至Enum中的,所以不能再继承
  • 19.6 enum与泛型结合使用,泛型库,随机选取
  • 19.7 枚举不能继承,但是可以同时继承一个接口,以达到泛型向上转型,统一类型
  • 19.8EnumSet抽象类
方法含义
EnumSet.noneOf(xxx.class)生成一个空的EnumSet< xxx >
EnumSet.of(xxx…)这些元素的集合
EnumSet.allOf(xxx.class)这个类所有实例的集合
EnumSet.range(a,b)从[a,b]元素的集合
EnumSet.complementOf(enumset<>)反转这个,有的变无,无中生有
  • 19.9EnumMap 键值必须来自一个enum,使用和一般Map相似
  • 19.10enum的元素可以实现本类中的抽象方法或者覆盖一般的方法
  • 19.10.1利用enum设计责任链模式,因为可以重载接口,所以用values方法获取所有实例,以此调用接口方法
  • 19.10.2//TODO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值