一. 出现背景:
在JDK1.5之前,我们定义常量是这样的:public static final String RED = “RED”;
在JDK1.5中加入了枚举类型,我们可以把相关的常量分组到一个枚举类中:
public enum Color { RED, GREEN, BLUE; }
使用的时候可以这样:Color c = Color.RED
二. 枚举特点:
1. 枚举enum是一个特殊的Java类,它继承自java.lang.Enum,继承了很多Enum的方法。但枚举类是一个不可以被继承的final类
2. 枚举类可以定义在interface或class中,当然枚举类型中有构造函数、方法、数据域:
public interface MyConstants { enum Color { RED("RED", 1), GREEN("GREEN", 2), BLUE("BLUE", 3); String desc; Integer value; private Color(String desc, Integer value) { this.desc = desc; this.value = value; } } enum Light { RED, GREEN, YELLOW; } }
使用:MyConstants.Color.RED
3. 枚举类中的够早期和普通类的构造器有些不同:
(a). 构造器只是在构造枚举值的时候被调用
(b). 构造器只能私有,这样可以保证外部代码无法新构建枚举类的实例
4. 所有枚举类继承了Enum的方法,下面是这些方法使用介绍:
(a). ordinal() 返回枚举值在枚举种类的顺序,这个顺序根据枚举值声明的顺序
(b). compareTo() Enum实现了java.lang.Comparable接口,它返回的是两个枚举值的顺序之差,但这两个枚举值必须属于同一个枚举类
(c). values 返回一个包含全部枚举值的数组
(d). toString 返回枚举常量的名称
(e). valueOf 类似toString
(f). equals 比较两个枚举类对象的应用
5. 在switch中使用:
public enum Light{ RED, GREEN, YELLOW; } class Test { public static void main(String[] args) { Light light = Light.RED; switch (light) { case RED: System.out.println("it's red"); break; case GREEN: System.out.println("it's green"); break; case YELLOW: System.out.println("it's yellow"); break; } } }
时间: 2024-11-07 00:34:58