1. 程式人生 > >使用javap進行反編譯Java列舉

使用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);

列舉類的簡單例子:https://www.cnblogs.com/theRhyme/p/9996966.html