package com.enum_;
/**
* @version 1.0
* @anther 田毅
*/
public class Enumeration03 {
public static void main(String[] args) {
System.out.println(Season2.SUMMER);
}
}
enum Season2{
//定义个四个对象
// public static final Season SPRING = new Season("春天", "温暖");
// public static final Season WINTER = new Season("冬天", "寒冷");
// public static final Season AUTUMN = new Season("秋天", "凉爽");
// public static final Season SUMMER = new Season("夏天", "炎热");
SPRING("春天","温暖"),SUMMER("春天","温暖"),WINTER("春天","温暖")
,AUTUMN("春天","温暖");
private String name;
private String desc;
//1、将构造器私有化,防止直接new出来
//2、去掉setXxx相关的方法,防止属性被修改
//3、在Season内部,直接创建固定的对象
//4、优化一下,可以再加一个final
private Season2(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
注意事项
1、使用enum关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类,通过javap反编译证明

2、传统的public static final Season2 SPRING = new Season2(“春天”,“温暖”);简化成了SPRING(“”,“”);,这里必须知道,调用的是哪个构造器;
3、如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略。
AUTUMN(“春天”,“温暖”),What(),Why;
enum Season2{
//定义个四个对象
// public static final Season SPRING = new Season("春天", "温暖");
// public static final Season WINTER = new Season("冬天", "寒冷");
// public static final Season AUTUMN = new Season("秋天", "凉爽");
// public static final Season SUMMER = new Season("夏天", "炎热");
SPRING("春天","温暖"),SUMMER("春天","温暖"),WINTER("春天","温暖")
,AUTUMN("春天","温暖"),What(),Why;
private String name;
private String desc;
private Season2() {//无参构造器
}
//1、将构造器私有化,防止直接new出来
//2、去掉setXxx相关的方法,防止属性被修改
//3、在Season内部,直接创建固定的对象
//4、优化一下,可以再加一个final
private Season2(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", desc='" + desc + '\'' +
'}';
}
}
课堂练习1

课堂练习2

sout默认调用toString