Java-枚举类型

枚举介绍

Java中的枚举是JDK5.0以后添加的新特性,枚举是用来定义一组数量确定的常量的类。
枚举类是一个特殊的类,它和普通类一样可以有构造方法,也可以有属性和普通方法。可以实现接口。

枚举的定义

public enum Color{
    RED,BLACK,BLUE;
}

这就定义了一个枚举类,其中的RED,BLACK,BLUE是这个枚举类的实例,每个实例需要用‘,’隔开,最后一个使用‘;’表示结束。说它们是实例那为什么没有用new呢?
那是因为在JDK5.0以前想要使用枚举需要自己定义。

public class Color{
    public static final int RED = 1;
    public static final int BLUE = 2;
    public static final int BLACK = 3;
}

在JDK5.0以后,为了能够更加方便的使用枚举,就出现了enum关键字。定义了枚举类之后,就把之前全部重复的代码给省去了。比如public static final int
所以才有了上面这样简单的定义。

枚举的使用

在定义了枚举类之后,直接使用类名加属性就可以调用。因为所有都是static的。

public class EnumTest {
    public static void main(String[] args) {
        Color black = Color.BLACK;
    }
}

在switch中使用

public class EnumTest {
    public static void main(String[] args) {
        Color red = Color.RED;
        switch (red){
            case RED:
                System.out.println("红色");
                break;
            case BLUE:
                System.out.println("蓝色");
                break;
            case BLACK:
                System.out.println("黑色");
                break;
        }
    }
}

在switch中使用时,不需要加类名,直接使用对象就行了。

枚举类的原理

枚举类实际上是继承了Enum类。

Enum中常用的方法:

返回类型 方法名 说明
String toStirng() 返回枚举类的名称
枚举类型[] values() 返回返回所有枚举常量
枚举类型 valuesOf(String name) 根据名称返回枚举常量

枚举类实现接口

枚举类实现了接口之后,需要实现对应的抽象方法,有两种实现方式,会有不一样的结果。
第一种:在枚举类中实现

public class EnumTest {
    public static void main(String[] args) {
        Color.RED.show();
        Color.BLUE.show();
        Color.BLACK.show();
    }
}

interface Show{
    void show();
}

enum  Color implements Show {
    RED,
    BLUE,
    BLACK;

    @Override
    public void show() {
        System.out.println("枚举了红色");
    }
}
/*
运行结果:
枚举了红色
枚举了红色
枚举了红色
*/

如果我想要每个颜色打印不一样的数据,这种实现方式就不行了,需要第二种实现方式。

在每个常量后面实现方法:

enum  Color implements Show {
    RED{
        @Override
        public void show() {
            System.out.println("枚举了红色");
        }
    },
    BLUE{
        @Override
        public void show() {
            System.out.println("枚举了蓝色");
        }
    },
    BLACK{
        @Override
        public void show() {
            System.out.println("枚举了黑色");
        }
    };
}
/*
运行结果:
枚举了红色
枚举了蓝色
枚举了黑色

*/
原文地址:https://www.cnblogs.com/Z-Dey/p/12900496.html