想要写一个enum B,并反编译,找了好久终于找到反编译结果比较全的方法
在idea中创建文件如下
package A;
public enum B {
Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
}
1.在idea左侧的output或target找到对应的B.class,打开,默认由FernFlower反编译,这个是插件Java Bytecode Decompiler,如果没有反编译,需要下载和勾选,结果如下
package A;
public enum B {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday;
private B() {
}
}
2.右键Open in-Terminal,输入javap B.class反编译,结果为
public final class A.B extends java.lang.Enum<A.B> {
public static final A.B Monday;
public static final A.B Tuesday;
public static final A.B Wednesday;
public static final A.B Thursday;
public static final A.B Friday;
public static final A.B Saturday;
public static final A.B Sunday;
public static A.B[] values();
public static A.B valueOf(java.lang.String);
static {};
}
3.使用工具xjad,这个比较详细,如果单个文件无法反编译那就放在文件夹或者jar包里,结果为
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: B.java
package A;
public final class B extends Enum
{
public static final B Monday;
public static final B Tuesday;
public static final B Wednesday;
public static final B Thursday;
public static final B Friday;
public static final B Saturday;
public static final B Sunday;
private static final B $VALUES[];
public static B[] values()
{
return (B[])$VALUES.clone();
}
public static B valueOf(String name)
{
return (B)Enum.valueOf(A/B, name);
}
private B(String s, int i)
{
super(s, i);
}
static
{
Monday = new B("Monday", 0);
Tuesday = new B("Tuesday", 1);
Wednesday = new B("Wednesday", 2);
Thursday = new B("Thursday", 3);
Friday = new B("Friday", 4);
Saturday = new B("Saturday", 5);
Sunday = new B("Sunday", 6);
$VALUES = (new B[] {
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
});
}
}