前言
打好基础,daydayup!
枚举
1,认识枚举:
枚举是一种特殊类,用enum语句修饰。与普通类不同的是:枚举类的第一行只能写一些合法的标识符(名称),多个名称用逗号隔开。这些标识符(名称)的本质是常量,每个常量会记住枚举类的一个对象。
2,枚举的格式:
表达式如下:
修饰符 enum 枚举类名{
名称1,名称2,...;...其他内容...}
例:
public enum EnumDemo {A,B,C;public void demo1(){}
}
注:枚举类不能在外部额外创建对象,只能在内部创建对象。内部创建了几个对象,就只能拥有几个对象。创建新对象会报错。同时,如果构建了构造器,那么这个构造器是私有非公开的
如下图:
然后通过javap命令在cmd中进行编译,可以发现枚举的对象都是由final进行修饰的,所以枚举都是最终类,不能被继承。
同时通过反编译可以观测到枚举类是自动继承java.lang.Enum这个类的。并同时继承了values和valueOF两个方法。
3, 枚举的自带方法
1,values方法:
该方法可以把枚举类中的所有对象添加到数组并遍历出来
如下图所示:
2,valueOF方法:
该方法可以通过调用枚举标识符(名称),来调用对象,并可以通过ordinal语句来查看对象索引。值得注意的是:“直接调用对象”和“通过调用名字来调用对象”,从结果上来看效果是一样的,但意义是完全不同的,一定要注意。
4,抽象枚举
和普通枚举不同,抽象枚举不能直接创建对象。若是直接创建对象,会报错说把类改成抽象类或移除抽象方法。
所以在抽象枚举中,需要在定义对象时重新定义方法。这样就可以避免报错。
5,枚举的使用场景
1,实现单例
单例是把类的构造器私有;定义一个类变量储存类 的一个对象:提供一个类方法返回对象。其特点为:在获取类的对象时,对象已经创建好了。
单例相关可以看这篇
java的面向对象编程(oop)——static概述及初始单例设计模式
这里用枚举类会有一个简单做法。如下
2,用来表示一组信息,然后作为参数进行传输(需要严格限定信息时)
实验要求:男女分类,如果是男生,向左走;如果是女生,向右走。
同样的实验要求也可以用常量做,但是用枚举的好处在于,分类信息一旦确定,很难轻易更改,不容易出差错。但是会比较死板,如果需要灵活的修改数据,还是用常量的方法来做。
结语:
枚举是一个比较封闭式的语句。优点在于数据不容易被篡改,非常安全。缺点在于如果需要经常更改变量方法,则会有些力不从心。总结结束,撒花!!!