Java 中的枚举(enum)
枚举就是一组有限数据的集合,比如:性别就可以用枚举表示,他们的元素分别为男、女,最多还加个未知或者人妖。
枚举也是一种特殊的类,与普通类的区别在于普通类在定义的时候不明确他将会有哪些实例对象存在,完全由程序员自己去生成实例,而枚举只是他的值在定义的时候就已经实例话了,如下面的枚举定义方式:
/**
* 定义了颜色有红、绿、蓝三种颜色的枚举类型
* @author lzjun
*
*/
public enum Color {
RED,GREEN,BLUE
}
枚举与类相同的地方在于,定义了一个枚举时,编译器同样会生成一个相关的类,这个类是继承的java.lang.Enum.
System.out.println(Color.BLUE.getClass());
System.out.println(Color.BLUE.getClass().getSuperclass());
输出结果:class com.lzjun.Color
class java.lang.Enum
从输出结果可以很明确的看出枚举本质上就是一个类,而他的父类是Enum.
既然是一个类的话,他就有类的特性,包括属性和方法。
/**
* 三个static方法
*/
// 根据String类型参数返回一个枚举值
System.out.println(Color.valueOf("BLUE"));
//返回该枚举中所有枚举值作为一个数组,顺序依然按照初始化的状态存放
System.out.println(Color.values());
//此方法继承与Enum中的valueOf方法,作用与第一个方法类似,具体使用可以参看jdk文档
System.out.println(Color.valueOf(Color.class, "RED"));
实例方法,继承自Enum
Color.BLUE.compareTo(Color.GREEN); //比较枚举的顺序
Color.BLUE.name(); //返回枚举的名称
Color.BLUE.ordinal(); //返回该枚举值在枚举定义时的位置
我们可以查看Enum的源码可以看出:
1、Enum类为抽象的
2、该类中没有ValueOf(String)方法和Values()方法
那么我们是否自己可以写一个继承Enum类的类呢,答案是否定的,编译器根本不允许你这么干,难道Enum就成摆设了?
我们可以尝试去反编译Color,看看创建一个枚举的时候,编译器究竟帮我们做了什么事情?
public final class com.lzjun.Color extends java.lang.Enum{
public static final com.lzjun.Color RED;
public static final com.lzjun.Color GREEN;
public static final com.lzjun.Color BLUE;
static {};
public static com.lzjun.Color[] values();
public static com.lzjun.Color valueOf(java.lang.String);
}
从代码看出其实这个Enum类是用来被继承的。
当然同样可以和普通类一样的去使用,除继承之外
/**
* 任意的扩展此枚举类
* @author lzjun
*
*/
public enum Color implements SomeInterface{
RED,GREEN,BLUE("蓝色");
private String description;
private Color(){};
private Color(String description){
this.description = description;
}
@Override
public String toString() {
return description;
}
public static void main(String[] args) {
System.out.println(BLUE);
}
}
enum还有一个重要的特点是就是可以用于switch语句。当然jdk7包括字符串在内的类型也能用于switch这个多路分支判断语句。
enum既然是一个集合,但遗憾的是他不能改变大小,就像数组一样,于是就诞生了EnumSet类,这样我们就可以像集合一样对他做CURD操作了.
分享到:
相关推荐
Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...
java中enum枚举的详细用法。 0.0
java enum详细教程。由浅入深,包括基本语法方面..很适合新手学习。/n各位看官。绝对超值。
ava enum 枚举的spring boot2.x完美实现demo源码。java的枚举类型,可以理解为一种特殊的java类
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
java高级编程 Enum枚举 包括枚举的例子,问题 及一些文档,是复习的好资源
java enum枚举教程学习资料
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
enum枚举的方法
java枚举小例子,简单了解枚举的用法,适合初学者使用。
主要介绍了java 中枚举类enum的values()方法的详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
计算机后端-Java-Java核心基础-第23章 枚举类与注解 06. 使用enum关键字定义枚举类.avi
全面掌握java枚举类型(enum-type)1
Java 枚举(enum) Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。 Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。 ...
NULL 博文链接:https://janeky.iteye.com/blog/463611
Java中的枚举类型Enum示例源代码,详见http://blog.csdn.net/snarlfuture/article/details/18996037
3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 二、如何定义枚举类 方式一:Jdk5.0之前,自定义枚举类 方式二:jdk5.0之后,可以使用enum关键字定义枚举类 三、Enum类的主要方法: 四、使用enum...
Java ---- enum --- 枚举类案例
enum的全称为enumeration, 是 JDK 1.5中引入的新特性,存放在 java....下面这篇文章是我在使用enum过程中的一些经验和总结,分享出来方便大家快速的掌握Java中枚举(enum),有需要的朋友们下面跟着小编来一起看看吧。
Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方 enum Season { SPRING, SUMMER, AUTUMN, WINTER } 定义了一个季节枚举类型。 在本例中,对于Season.SPRING这个...