枚举是在JDK1.5以后引入的。
主要用途是:将一组常量组织起来。
在这之前表示一组常量通常使用定义常量的方式:
public static int final RED = 1;
public static int final GREEN = 2;
public static int final BLACK = 3;
但是常量举例有不好的地方,例如:可能碰巧有个数字1,但是它有可能误会是 RED.
现在我们可以直接用枚举来进行组织,这样一来,就拥有了类型,枚举类型。而不是普通的整形1。
public enum TestEnum {
RED,BLACK,GREEN;
}
将常量组织起来统一进行管理
错误状态码,消息类型,颜色的划分,状态机等等。。。。。。。
是 java.lang.Enum 的子类也就是说,它自己写的枚举类,就算没有显示的继承 Enum,但是其默认继承了 这个类。
方法名称 | 描述 |
---|---|
values() | 以数组形式返回枚举类型的所有成员 |
ordinal() | 获取枚举成员的索引位置 |
valueOf() | 将普通字符串转换为枚举实例 |
compareTo() | 比较两个枚举成员在定义时的顺序 |
最直接的方法就是查阅JDK的文档了,oracle在线文档的地址在这里:链接
找到这个部分
也就是说 之所以我们咋 enum 类中,看不到 values 方法 ,是因为 它是编译器在程序运行起来的时候,创建 Enum 类时,会自动添加一些特殊方法,其中就包括 values 方法。
现在明白了吧! values 竟然隐藏的如此深,真的牛皮。
目前个人觉得这个功能很鸡助。。
题
上篇博文反射说到:任何一个类,哪怕其构造方法是私有的,我们也可以通过反射拿到它的实例对象,那么枚举的构造方法也是私有的,我们是否可以拿到呢?接下来,我们来实验一下:
关于继承的问题,不明白的可以参考这篇文章ObjectOrientedProgramming - 面向对象的编程
可以看看这个文章单例模式简介,我最后的那个单例模式的代码就是这里拿的。
1、枚举 将常量组织起来统一进行管理,更简单安全。
2、枚举本身就是一个类,其构造方法默认为私有的,且都是默认继承于 java.lang.Enum
2、 枚举可以避免反射和序列化问题:枚举类非常安全!
4、不可继承,无法扩展。
5、枚举具有内置方法 ,代码更优雅
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/DarkAndGrey/article/details/123195198
内容来源于网络,如有侵权,请联系作者删除!