自定义枚举
enum Day {
MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
#初步使用
public class EnumDemo {
public static void main(String[] args){
//直接引用
Day day =Day.MONDAY;
}
}
这就是枚举类的初步使用,其实相当于定义了常量,从而使得开发更容易交流。那么枚举类是如何工作的呢,编译器帮助我们生成了一个Day类而且该类继承自java.lang.Enum类,该类是一个抽象类,除此之外,编译器还帮助我们生成了7个Day类型的实例对象分别对应枚举中定义的7个日期。还为我们生成了两个静态方法,分别是values()和 valueOf()。使用关键字enum定义的枚举类型,在编译期后,也将转换成为一个实实在在的类,而在该类中,会存在每个在枚举类型中定义好常量的对应实例对象,如上述的MONDAY枚举类型对应public static final Day MONDAY。
values()方法的作用就是获取枚举类中的所有变量,并作为数组返回,而valueOf(String name)方法与Enum类中的valueOf方法的作用类似根据名称获取枚举变量,只不过编译器生成的valueOf方法更简洁些只需传递一个参数。
使用枚举需要注意的地方:
-
枚举类的构造方法必须是private,默认缺省就是private ,如果使用其他的访问修饰符会报错。
-
变量和方法的访问修饰符可以任意。但是按照惯例还是把字段声明成private,然后给出相应的get和set方法。
-
枚举的set方法是可以生效的,但是一般我们只需要对枚举类进行get方法即可,不需要去生成set方法。以防暴露不该暴露的方法。