在JDK1.5 之前,我们定义常量都是: public static final… 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 枚举类实际上就是简化的多例化设计。多例化设计的特点是什么?
构造方法私有化。。构造方法私有化。。构造方法私有化。。
enum Color{ //定义一个枚举类
HONGSE,LANSE,HUANGSE //此处没有分号 此处生成了三个实例化对象
}
public class Test {
public static void main(String args[]){
Color temp=Color.HONGSE; //直接用类名调用对象
System.out.println(temp);//HONGSE 说明toString方法重写了 直接返回对象名称
}
}
在枚举类中提供了valuse()方法,这个方法会将枚举类全部对象以对象数组的形式返回。因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。
我们先来拓展一下枚举类的结构,代码如下:
package com.Test.Demo.TesrDemo1;
public enum YanSe {
HONG("红色",1),LAN("蓝色",2),HUANG("黄色",3),HEI("黑色",4);//此处定义了枚举对象 必须写在首行
private String name;
private int id;
private YanSe(){//枚举类型构造方法不能用public声明
}
private YanSe(String name,int id){
this.name=name;
this.id=id;
}
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
}
我们再写一个main方法测试一下功能。
package com.Test.Demo.TesrDemo1;
public class TestDemo1 {
public static void main(String args[]){
YanSe[] temp1=YanSe.values();
for(YanSe tt :temp1){
System.out.println(tt+"--"+tt.getId()+"--"+tt.getName());
}
}
}
/*程序执行结果:
HONG--1--红色
LAN--2--蓝色
HUANG--3--黄色
HEI--4--黑色
*/
枚举类可以看做一种特殊的类,所以枚举类也可以实现接口,但是枚举类都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。