概述
Java 枚举是一个特殊的类,一般表示一组常量。
由于枚举类型的实例是常量(枚举值都是 public static final 的),因此按照命名惯例,它们都用大写字母表示(如果名称中含有多个单词,使用下划线分隔)。
枚举类的定义
enum Color //用enum关键字定义,默认继承Enum类
{
RED, GREEN, BLUE; //实例对象
}
使用:
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
// 执行输出结果
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
}
}
输出结果:
RED
枚举 与 switch
配合使用:
enum Color
{
RED, GREEN, BLUE;
}
public class MyClass {
public static void main(String[] args) {
Color myVar = Color.BLUE;
switch(myVar) {
case RED:
System.out.println("红色");
break;
case GREEN:
System.out.println("绿色");
break;
case BLUE:
System.out.println("蓝色");
break;
}
}
}
输出结果:
蓝色
特性
除了不能继承自一个 enum 之外,我们基本上可以将 enum 看作一个常规的类。也就是说我们可以向 enum 中添加方法。enum 甚至可以有 main() 方法。
enum Color
{
RED, GREEN, BLUE; //实例序列写在方法、属性之前。
// 构造函数
private Color()
{
System.out.println("Constructor called by : " + this.toString());
}
public void colorInfo()
{
System.out.println("Universal Color");
}
}
public class Test
{
// 输出
public static void main(String[] args)
{
Color c1 = Color.RED;
System.out.println(c1);
c1.colorInfo();
}
}
输出结果:
Constructor called by : RED
Constructor called by : GREEN
Constructor called by : BLUE
RED
Universal Color
- 注:Java 要求你必须先定义 enum 实例。如果在定义 enum 实例之前定义了任何方法或属性,那么在编译时就会得到错误信息。 –《On Java 8》
常用方法
values()
: 返回枚举类中所有的值构成的数组。ordinal()
: 方法可以找到每个枚举常量的索引,就像数组索引一样。索引从0开始,顺序由枚举实例在序列中的位置(先后顺序)有关。
valueOf()
: 方法返回指定字符串值的枚举常量。
enum Color
{
RED, GREEN, BLUE;
}
public class Test
{
public static void main(String[] args)
{
for(Color color:Color.values()){
System.out.println("颜色:" + color.name() + "-序号:" + color.ordinal());
}
// 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
System.out.println(Color.valueOf("RED"));
}
}
- enum:JDK1.5之后提供的一个关键字,用于枚举类的定义。
- Enum:一个抽象类,所有使用
enum
关键字定义的类默认继承此类。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1401362462@qq.com