枚举enum
1、常量的集合
2、可以理解为枚举是一种特殊的类,里面包含一组有限的特定对象。
自定义类实现枚举:
(1)把构造器私有化,set方法注销,只允许读数据。
(2)对枚举对象使用public static final共同修饰,实现底层化。
(3)枚举对象名通常使用全部大写,常量的命名规范。
(4) 枚举对象根据需要,可以有多个属性(春天、温暖)。
public class enum02 {
public static void main(String[] args) {
System.out.println(Season.AUTUMN);
}
}
class Season{
private String name;
private String desc;
//定义四个对象 固定
public static final Season SPRING = new Season("春天", "温暖");
public static final Season WINTER = new Season("冬天", "寒冷");
public static final Season SUMMER = new Season("夏天", "炎热");
public static final Season AUTUMN= new Season("秋天", "凉爽");
private Season(String name, String desc) {
= name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
enum关键字实现枚举:
1、 使用enum替代class
2、public static final Season SPRING = new Season("春天", "温暖");直接使用
SPRING("春天", "温暖")解读 常量(实参列表)
3、如果有多个常量(对象),使用逗号间隔即可
4、如果使用enum来实现枚举,要求将定义常量对象,写在前面,属性写在后面
public class enum03 {
public static void main(String[] args) {
System.out.println(Season2.SPRING);
}
}
enum Season2 {
SPRING("春天", "温暖"),
WINTER("冬天", "寒冷"),
SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽");
private String name;
private String desc;
private Season2(String name, String desc) {
= name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
使用关键字enum注意事项:
1、使用enum关键字开发枚举时,会默认继承Enum类,而且是finnal类。
2、传统的public static final Season SPRING = new Season("春天", "温暖");直接使用
SPRING("春天", "温暖");要知道调用的时那个构造器(2个参数构造器)。
3、如果使用无参构造器创建枚举对象,则实参列表和小括号可以省略(BOY,GRIL),以下是对的。
enum Gender{
BOY,GIRL;
private static Gender(){};
}
父类Enum 中各种方法:(另外补充:增强for循环)
public class EnumMethod {
public static void main(String[] args) {
Season2 autumn = Season2.AUTUMN;
//name()输出枚举对象名称
System.out.println(());
//ordinal()输出该枚举对象次序/编号,从0开始编号
System.out.println(autumn.ordinal());
//values(),返回Season2[],含有定义的所有枚举对象
Season2[] values = Season2.values();
System.out.println("遍历取出枚举对象");
for(Season2 season2:values){//增强For循环
System.out.println(season2);
}
//valueof(),将字符串转换成枚举对象,要求字符串必须是已有的常量名,否则报异常
//根据你输出的"AUTUMN"到Season2的枚举对象中去找
//如果找到了就返回,没有找到就报错
Season2 autumn1 = Season2.valueOf("AUTUMN");
System.out.println(autumn1);
//1、把Season2.AUTUMN和Season2.SUMMER编号进行比较
//2、Season2.AUTUMN[2]-Season2.SUMMER[3],比较谁前谁后
System.out.println(Season2.AUTUMN.compareTo(Season2.SUMMER));
//toString(),Enum类中是返回name,及对象名,一般应用枚举类中会重写。
// System.out.println("=====普通for=====");
// int[] arr ={1,2,3};
// for(int i = 0; i< arr.length; i++){
// System.out.println(arr[i]);
// }
// System.out.println("====增强for=====");
// for (int i : arr) { //快捷键 对象名.for
// //依次从arr数组中取出数据赋给i
// System.out.println(i);
//
// }
}
}
Enum使用细节:
1、使用Enum关键字后不能在继承其他类了,因为它已经继承了Java.Long.Enum类,而java是单继承机制
2、枚举和普通类一样,可以实现接口
enum 类名 implements 接口1,接口2{}
















