使用javap進行反編譯Java列舉
阿新 • • 發佈:2018-12-28
這是一個列舉類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> { publicstatic 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