使用enum关键字来定义,每个常量使用,来分隔
权限修饰符 enum enumName{
元素1,
元素2,
元素3,
…………
}
最后一个数据元素用;结尾(只定义了数据元素时可以省略)
public enum Color {//不能继承某个类,可以实现接口
//数据元素(用大写字母表示,本质上为常量)
//数据元素必须定义
RED,
BLUE,//默认调用了无参构造方法
GREEN;//(只定义了数据元素时,可以省略分号)
}
Java中enum本质上就是一个类
枚举的成员就是枚举对象,只不过他们是静态常量而已
如果用类来模拟枚举的话
//用类模拟枚举
public class Color1 {
//枚举成员的本质(静态常量)
public static final Color1 RED = new Color1();
public static final Color1 BLUE = new Color1();
public static final Color1 GREEN = new Color1();
//此时只能在类内进行访问
private Color1(){
}
}
只能定义私有的构造方法
枚举中显式定义了带参的构造方法后,定义数据元素时必须手动调用
public enum Color {
//枚举中显式定义了带参的构造方法后,定义数据元素时必须手动调用
RED("红色"),
BLUE("蓝色"),
GREEN("绿色");
//定义带参数的构造方法(只能定义私有构造方法)
private Color(String colorName){
//对属性进行初始化
this.colorName = colorName;
}
}
枚举不可以实例化(编译器自动为其构造方法加上了private)
//Color color = new Color();//不能通过构造方法去创建对象
Color color = Color.RED;//直接赋值定义的元素即可
printColor(color);
不定义setter方法,只提供getter方法
不能继承某个类,但是可以实现接口
所有枚举类默认继承Enum类
数值在程序中是稳定的
所以有枚举类都继承了Enum类的方法
toString(可以重写)
equals
hashcode
枚举成员也是常量,所以不能用数字开头
不可以用=为枚举常量赋值