枚举类型

枚举类型

  • 关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用

  • 基本enum特性

    enum.values();//遍历enum实例,返回enum实例数组。数组中的元素保持其在enum声明时的顺序
    enum.ordinal();//返回每个enum实例在声明时的次序
    enum.getDeclaringClass();//知道其所属的enum的类
    enum.valueOf();//它根据给定的名字返回相应的enum实例
    enum.name();//返回enum实例声明时的额名字,与使用toString()方法效果相同
    
  • 向enum中添加新方法

    1. 为枚举实例添加构造器,专门负责处理额外的信息,然后添加一个方法,返回这个描述信息。
    2. 如果定义自己的方法,必须在enum实例序列的最后添加分好,同时,Java要求你必须先定义enum实例。
    3. 覆盖enum的方法:与覆盖一般类的方法一致
    4. enum都继承自java.lang.Enum类,由于Java不支持多继承,所以在创建一个新的enum时,可以实现一个或多个接口
    5. JDK1.6之前switch只支持int、char,之后支持enum类型,能让我们的代码可读性更强。
  • EnumSet替代标志

    1. enum要求其成员都是唯一的,所以enum看起来也具有集合的行为。不过不能从enum中删除或添加元素。
    2. Java SE5引入EnumSet ,是为了通过enum创建一种替代传统的基于int的“位标志”
    3. EnumSet的速度非常快。使用优点是,他在说明一个二进制位是否存在是,具有更好的表达能力,并且性能佳。EnumSet中的元素必须来自于一个enum
    4. enum实例定义的次序决定了在EnumSet的顺序
  • EnumMap

    1. 一种特殊的map,他要求其中的键必须来自一个enum。
    2. 由于Enum本身的限制,EnumMap内部可由数组实现。只能将enum实例作为键来调用put(),其他操作与一般map无区别。
    3. enum实例定义的次序决定了在EnumMap的顺序
    4. EnumMap允许改变值对象
  • 常量相关的方法

    1. enum要实现常量相关的方法,需要为enum定义一个或多个abstract方法,然后为每个enum实例实现该抽象方法。通过enum实例,可以调动其上的方法,称之为表驱动的代码
    2. enum也可覆盖常量相关的方法
    3. 职责链:在职责链设计模式中,程序员以多种不同的方式来解决一个问题,然后将他们链接在一起。当一个请求到来时,它遍历这个链,直到链中的某个解决方案能够处理该请求
    4. 状态机:一个状态机可以具有有限个特定的状态,它通常根据输入,从一个状态转移到下一个状态,不过也可能存在瞬时状态。而一旦任务结束,状态机就会离开瞬时状态。每个状态都有一些可接受的输入,不同的输入会使状态机从当前状态转移到不同的新状态
  • 多路分发

    1. Java只支持单路分发。也就是说,如果要执行的操作包含了不止一个类型未知的对象时,那么Java动态绑定机制只能处理其中一个类型。
    2. 使用enum分发、使用常量相关的方法、使用EnumMap分发、使用二维数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值