博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用javap进行反编译Java枚举
阅读量:4953 次
发布时间:2019-06-12

本文共 1339 字,大约阅读时间需要 4 分钟。

这是一个枚举类Day.java

public enum Day {    MONDAY("星期一"),    TUESDAY("星期二"),    WEDNESDAY("星期三"),    THURSDAY("星期四"),    FRIDAY("星期五"),    SATURDAY("星期六"),    SUNDAY("星期天");    /**     * 中文描述     */    private String desc;    public String getDesc() {        return desc;    }    /**     * 私有构造方法,防止被外部调用     * @param desc     */    private Day(String desc) {        this.desc = desc;    }}

进入到这个文件目录下编译该文件:javac -encoding UTF-8 Day.java

这时候,该目录会有一个Day.class编译后的字节码文件;

再执行:javap -p Day.class   

Compiled from "Day.java"public final class Day extends java.lang.Enum
{ public static final Day MONDAY; public static final Day TUESDAY; public static final Day WEDNESDAY; public static final Day THURSDAY; public static final Day FRIDAY; public static final Day SATURDAY; public static final Day SUNDAY; private java.lang.String desc; private static final Day[] $VALUES; public static Day[] values(); public static Day valueOf(java.lang.String); public java.lang.String getDesc(); private Day(java.lang.String); static {};}

可以看到,public enum Day定义一个枚举类,反编译之后看到public final class Day extends java.lang.Enum<Day>Java枚举类不能被继承

每一个枚举都是public static final只能被赋值一次,大概就是这些,如果想看更加详细的反编译可执行:javap -c Day (这里不要写文件后缀.class);

反编译可以输出常量池的信息以及元素个数:javap -verbose Day.class

Java枚举的简单例子:

 

转载于:https://www.cnblogs.com/theRhyme/p/10192330.html

你可能感兴趣的文章
活现被翻转生命
查看>>
POJ 1228
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
springmvc怎么在启动时自己执行一个线程
查看>>
流操作的规律
查看>>
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>
C#小练习ⅲ
查看>>
debounce、throttle、requestAnimationFrame
查看>>
linux下的C语言快速学习—进程和文件
查看>>
电源防反接保护电路
查看>>
stm32 堆和栈(stm32 Heap & Stack)
查看>>
SpringMVC从入门到精通之第三章
查看>>
JS基础-dom操作
查看>>