1.定义
public enum Season {
SPRING,SUMMER,FAIL,WINTER;
//其中每一个都相当于新创建了一个对象
//public static Season SPRING = new Season();
}
2.使用
Season.SPRING
* 小结:
1.enum和class、interface的地位一样
2.类中的第一行是该类的实例对象,枚举类的所有实例都必须放在第一行(中间是逗号),不需使用new 关键字,
不需显式调用构造方法,并且会自动添加public static final修饰。
3.枚举类的构造器只能是私有的。
枚举定义属性以及方法
枚举类也可以定义属性以及方法,并且调用有参构造
1.定义
public enum Season {
SPRING("春天"),SUMMER("夏天"),FAIL("秋天"),WINTER("冬天");
//定义一个属性name
private final String name;
//私有构造
private Season(String name){
this.name = name;
}
//get方法
public String getName() {
return name;
}
}
2.使用
Season.SPRING
示例:
System.out.println(Season.SPRING);//spring
System.out.println(Season.SPRING.name);//春天
System.out.println(Season.SPRING.getName());//春天
为什么选择使用枚举不使用静态常量
*.静态常量也可以达到枚举的效果,如
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL = 3;
public static final int SEASON_WINTER = 4;
//定义成枚举
SPRING(1),SUMMER(2),FAIL(3),WINTER(4);
主要原因:
public void test(Season season)
public void test(int season)
静态常量类型不安全,一个类需要传递的参数是Season,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行
但是如果是枚举类型的话,就只能传入枚举类中包含的对象。