java的Enum反编译

想要写一个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
		});
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值