之所以想要写一篇这样的文章,是因为我目前所做的项目中,实在是使用了太多的枚举类了,Spring与Mybatis的注解大量使用了枚举类,在我们的业务代码中也用来定义一些业务策略。然而我平时对于枚举类只是简单的使用,故打算写一篇这样的文章来总结一下。
java的枚举类型有jdk1.5开始正式提供,用来定义一系列常量。
1、简单的枚举类例子
我们先定义一个Color枚举类型,代码如下:
public enum Color {
RED,YELLOW,GREEN
}
格式如上所示,定义Color枚举类需要使用emum关键字,有些读者可能会有了异或:为什么称这个例子为一个枚举类?并没有使用class关键字啊。可以先别着急,这里先卖一个关子,后面会对此作出解释。
内部RED,YELLOE, GREEN是当前枚举类Color的三个实例。
2、反编译查看 Color枚举类
这里不要使用jd-gui或者intellij idea自带的反编译工具查看,它们为了更易使读者理解,隐藏了一些细节。我在这里使用了jdk自带的反编译命令查看。
1、首先,将Color 枚举类编译为class文件,使用javac命令。
javac Color.java
2、在当前目录中已经生成了Color.class文件
先介绍一下javap命令的使用方法
#语法
javap [命令选项] class文件名
#命令选项
-help --help -? 输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员(可以不加)
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正