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