class CheckInventory(target: Target) : Command(target) {
}
使用 IntelliJ 的“显示 Kotlin 字节码”选项反编译上述 Kotlin 代码时,在
super()
调用之前会不断生成一个语句。class CheckInventory extends Command {
public CheckInventory(Target target) {
Intrinsic.checkParameterIsNotNull(target, "target");
super(target); //error, must be first call
}
}
还有一些其他问题,例如在WhenMapping中生成带访问修饰符的顶级类:
public class MyClass {
}
public final class MyClass$WhenMappings { //error, shouldn't be public
}
我检查了 Kotlin 和 IntelliJ 的更新,并且使用的是两者的最新版本。
起初我认为这可能与 Kotlin 代码写得不好有关,但即使是最简单的代码文件似乎也需要某种检查/生成,在 Java 中是非法的。
问题:是否有办法确保反编译过程遵守 Java 语言规则的限制?