枚举类是一种特殊形式的Java类,枚举类的对象个数是有限且明确的
枚举特征:
-
关键字enum
-
构造方法必须是private, 如果不写,默认就是private
-
包含有限个数的本类静态的常量, 只需要写常量名, 默认的public static final 修饰, 调用本类无参构造
-
枚举类的父类: java.lang.Enum类
-
枚举是一个特殊的类, 可以包含属性和方法
优点:
1.提高代码的维护性,确保变量合法
2.提高代码可读性
3.提高代码键入
缺陷:
-
类型不安全。若一个方法中要求传入季节这个参数,用常量的话,形参就是int类型,开发者传入任意类型的int类型值就行,但是如果是枚举类型的话,就只能传入枚举类中包含的对象。
-
没有命名空间。开发者要在命名的时候以SEASON_开头,这样另外一个开发者再看这段代码的时候,才知道这四个常量分别代表季节。
注意:
1. 实际上在第一行写枚举类实例的时候,默认是调用了构造器的,所以此处需要传入参数, 因为没有显式申明无参构造器,只能调用有参数的构造器。
2.构造器需定义成私有的,这样就不能在别处申明此类的对象了。枚举类通常应该设计成不可 变类,它的Field不应该被改变,这样会更安全,而且代码更加简洁。所以我们将Field用 private final修饰。
练习:
根据交通信号灯颜色决定汽车停车、行驶和慢行
提示:使用枚举实现, 使用枚举定义交通灯的颜色
package com.fs.Demo1;
public class Test2 {
public static void main(String[] args) {
TrafficLight trafficLight = TrafficLight.RED;
switch (trafficLight){
case RED:
System.out.println("汽车停车!");
break;
case GREEN:
System.out.println("汽车行驶!");
break;
case YELLOW:
System.out.println("汽车慢行!");
}
}
}
package com.fs.Demo1;
public enum TrafficLight {
//信号灯的颜色
RED,GREEN,YELLOW;
}