给定StackTraceElement.getLineNumber()
,有没有办法从已编译的类文件中读取此行的内容?即使有可能匹配该行,编译器也会“混淆”类文件的内容吗?
例如,如果我有:
public void myMethod () {
MyObj m = new MyObj (); // can I reconstruct this line as String?
}
最佳答案
源代码不包含在已编译的类文件中,后者包含字节码。所以不,仅从类文件中进行操作就无法重构该行代码。当然,可以反编译Java字节码,并且构建良好的反编译器可能会或多或少地重构该行代码,但是您必须拥有一个不错的反编译器。最终结果可能看起来与原始源代码看起来很不一样,这取决于优化等。