gpt4 book ai didi

Java 反编译器生成抽象枚举

转载 作者:行者123 更新时间:2023-11-30 07:04:07 24 4
gpt4 key购买 nike

我用JD反编译了一个.jar可执行文件。我遇到了一个无法编译的抽象枚举代码:

private static abstract enum Type {
ANONYMOUS(4) , STANDARD(0);

private final int start;

private Type(int start) {
this.start = start;
}

public int getStart() {
return this.start;
}

public abstract void insertHeader(Sheet paramSheet,
SummaryCodec.Style paramStyle, float paramFloat1,
float paramFloat2);

public abstract String insertCommentSource(String paramString);

public abstract int insertBreakdown(Sheet paramSheet,
SummaryCodec.Style paramStyle, String paramString,
Entry paramEntry, int paramInt);

public abstract void collateComment(List<String> paramList,
String paramString);
}

编译错误:成员枚举类型的非法修饰符;只允许 public、protected、private 和 static枚举常量 ANONYMOUS 必须实现抽象方法 collat​​eComment(List, String)枚举常量 STANDARD 必须实现抽象方法 collat​​eComment(List, String)

在哪里可以找到 ANONYMOUS 和 STANDARD 抽象方法的实现代码?我在同一个文件中找不到它。尝试在其他文件中寻找它。

最佳答案

JD 显然有一个用抽象方法反编译枚举的错误;你不应该得到那个类签名(它确实对应于字节码,但没有考虑到 Java 编译器对 enum 的魔力)。

每个覆盖声明方法的枚举实例都有自己的 .class 文件,就像匿名类一样。在与 Type.class 相同的目录中查找名为 Type$1.class 的文件。

关于Java 反编译器生成抽象枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com