背景
原来我们定义常量值是用public final static类型来定义,而jdk1.5之后才有的这个枚举类型,采用关键字enum来定义
枚举类型
它是一种特殊的数据类型,因为它既是一种类类型但又比类类型多了写特殊的约束
在没有枚举类型时定义常量方式
public class Day{
public static final int RED=1;
public static final int GREEN=2;
public static final int YELLOW=3;
}
枚举类型定义常量方法
javaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值,枚举类型的简单定义方法如下:
//首先枚举是一个特殊的class
//这个class相当于final static修饰,不能被继承
//所有的枚举都继承自java.lang.Enum类,由于java不支持多继承,所以枚举对象不能再继承其他类
public enum Day{
//相当于RED=new ColorEnum(1),按序号来
RED,GREEN,YELLOW;
}
枚举类型提供了构造函数,我们可以通过构造函数和覆写toString方法来实现具体的值。改造后的代码如下:
public enum Light{
//利用构造函数传参
RED(1),GREEN(3),YELLOW(2);
//定义私有变量
private int num;
//构造函数,枚举类型只能为私有
private Light(int num){
this.num=num;
}
//覆盖方法:只能用toString方法来输出枚举变量值
@Override
public String toString(){
return String.valueOf(this.num);
}
}
向枚举中添加新方法
如果添加自定义的方法,那么必须再enum实例序列的最后添加一个分号。
public enum SeasonEnum{
//每一个枚举变量都是枚举类SeasonEnum的实例化
//SeasonEnum.SPRING获得的对象相当于new SeasonEnum("春","春天");
SPRING("春","春天"),SUMMER("夏","夏天"),AUTUMN("秋","秋天"),WINTER("冬","冬天");
//构造方法,赋值给成员变量
private SeasonEnum(String name,String value){
this.name=name;
this.value=value;
}
//添加成员变量
private String name;
private String value;
//get,set方法
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
具体使用
public class SeasonDemo{
public static void main(String[] args){
//直接引用,通过Enum类型名直接引用该常量
Season season=Season.SPRING;
}
}
//定义枚举类型
enum Season{
SPRING,SUMMER,AUTUMN,WINTER;
}
直接引用枚举的值即可