zoukankan      html  css  js  c++  java
  • 枚举类概述

    枚举:列举,罗列

    枚举是代表这样的一系列的类型,这些类型有一个非常明显的特征:他们的对象是有限的几个。
    例如:
    Week(星期):可以限定week类型的对象只有7个:Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
    Season(季节):可以限定为4个对象:Spring,Summer,Autumn,Winter
    Status(员工状态):可以限定为4个:Free,Busy,Vacation,Left
    枚举类是JDK1.5之后引入的。

    那么JDK1.5之前是如何实现枚举类这样的功能呢?

    要点:整个系统中,某个类型的对象是有限的几个,不多也不少。
    (1)限制使用者随意的创建对象---》构造器私有化
    (2)把有限的几个对象,预先创建好,放着,供使用者使用---》在枚举类中,用静态的类变量把有限的几个对象存储起来,使用者通过“类名.对象名”来获取。
    public class TestOld{
    public static void main(String[] args){
    Season s = Season.SPRING;
    }
    }

    class Season{
    //(2)把有限的几个对象,预先创建好,那么因为构造器私有化,只能在本类中创建
    //创建好还要用变量存储起来。(局部变量、实例变量、静态类变量)
    public static final Season SPRING = new Season();
    public static final Season SUMMER = new Season();
    public static final Season AUTUMN = new Season();
    public static final Season WINTER = new Season();

    private String name;
    private String desc;

    //(1)构造器私有化
    private Season(){

    }

    private Season(String name,String desc){
    super();
    this.name = name;
    this.desc = desc;
    }
    }

    JDK1.5以后的枚举类
    枚举类型也是类,原来用class声明类,现在用enum来声明枚举。
    声明的语法格式:
    【权限修饰符】 enum 枚举类名称{
    常量对象列表;
    【其他成员】
    }
    常量对象列表表示为:
    MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY[;](此分号根据情况存在与否)

    说明:
    (1)枚举类型的构造器一定是私有的,不管自己手动添加与否,都是默认的私有的,而且手动无法进行添加公有的构造器。
    (2)枚举类型的常量对象列表必须在枚举类的首行。
    说明:
    如果常量对象列表后面没有其他成员,那么分号“;”可以省略,如果后面还有其他的成员,“;”不能省略。
    (3)所有枚举类型有一个直接父类java.lang.Enum类型,所以你不能继承其他类
    (4)switch...case
    (5)如果在枚举类里面没有写构造器,那么系统会默认有一个不显示的无参构造器,当然也可以自己写一个有参数的构造器,如果手动添加这个有参构造器的话,首行的常量对象列表就会报错,此时就可以在每个常量对象后面加上“(实参列表)”,或者再把无参构造器显式写出来,那么常量对象列表可以不做修改。

    首行:
    (1)package
    (2)super(),this()
    (3)枚举类常量对象

    switch...case的表达式的类型:
    (1)基本数据类型:byte、short、int、char
    (2)引用数据类型:枚举(JDK1.5之后),String(JDK1.7之后)
    语法结构:
    switch(表达式){
    case 常量名1:
    语句;
    【break;】
    }

    java.lang包有一个特点,就是此包中的类不需要导包。
    java.lang.Enum类,他是所有Java语言枚举类型的公共基本类。
    即所有枚举类型都继承它,不能再继承别的类了。
    (1)name():返回此枚举常量的名称
    (2)ordinal():返回枚举常量的序号(它在枚举声明中的位置,其中初始常量序数为0)
    (3)int compareTo(x):默认按照枚举对象的顺序排序
    (4)API中没有,编译器自动生成的
    枚举类型[] values()
    枚举类型 valueOf(常量名)

  • 相关阅读:
    !ps之前一次执行的内容
    shortcut switch in terminal start pos & end pos
    百度词典搜索_dress code
    修杰楷_百度百科
    红米让夏新没活路了,
    绝杀600元以下智能手机的夏新小V二代-专栏-速途网
    李宗瑞_百度百科
    监制_百度百科
    文件上传~Uploadify上传控件
    知方可补不足~CSS中的几个伪元素
  • 原文地址:https://www.cnblogs.com/1185937986-jili/p/12874258.html
Copyright © 2011-2022 走看看