使用javap进行反编译Java枚举

这是一个枚举类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<Day> {
  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/9996966.html

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值