给定StackTraceElement.getLineNumber(),有没有办法从已编译的类文件中读取此行的内容?即使有可能匹配该行,编译器也会“混淆”类文件的内容吗?

例如,如果我有:

public void myMethod () {
    MyObj m = new MyObj ();   // can I reconstruct this line as String?
}

最佳答案

源代码不包含在已编译的类文件中,后者包含字节码。所以不,仅从类文件中进行操作就无法重构该行代码。当然,可以反编译Java字节码,并且构建良好的反编译器可能会或多或少地重构该行代码,但是您必须拥有一个不错的反编译器。最终结果可能看起来与原始源代码看起来很不一样,这取决于优化等。

09-11 18:12