枚举类型:
在JDK1.5之前,我们定义常量都是:public static fianl…。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法
首先定义枚举类
package com.baidu; public enum Color { Red,Green,Blue,Yellow; }
然后使用
package com.baidu; public class EnumColor { public static void main(String[] args) { System.out.println(IsRed(Color.Blue)); System.out.println(IsRed(Color.Red)); } public static boolean IsRed(Color color) { if (Color.Red.equals(color)) { return true; }else { return false; } } }
最后输出
当一个类定义为枚举类的时候,那么当我们可以直接用类名.变量名,这样子类似于直接用对象.变量名,不同的是我们不需要创建枚举类的对象就可以直接使用。
当我们直接输出枚举类名.变量名的时候,输出的就是变量名本身的字样,感觉像是输出字符串一样,但是每次只可以使用一个
也可以使用toString()和equals()方法
当我们使用普通类来继承这个枚举类的时候,发现报错了
并且有如下的提示:
The type Color cannot be the superclass of demo; a superclass must be a class
要么更改extends为implements就是说这个枚举类不能继承只能实现,要么更改demo类为接口。
总结如下:
- 枚举类的父类是java.lang.Enum类 非抽象枚举类默认使用final修饰,不能存在子类
- 枚举类的构造器只能使用private修饰符,默认就是private
- 枚举类的所有实例必须在枚举类的第一行显式列出,否则这个枚举类永远不能产生实例,列出的实例,系统会自动添加public static final修饰
- 抽象的枚举类,系统默认使用abstract修饰,而不用final修饰
- compare(E o):用于与指定的枚举对象比较顺序,同一个枚举实例只能与相同类型的枚举实例进行比较。如果该枚举对象位于指定枚举对象之后,则返回正整数
- name():返回此枚举实例的名称
- ordinal():返回枚举值在枚举类中的索引值(从0开始)
- toString():与name方法一致,推荐使用toString
- valueOf():一个静态方法,用于返回指定枚举类中指定名称的枚举值