如果代码是这样的
@CompileStatic
class TestGroovy {
void funcA() {
try {
def a = 1 + 1
} catch (e) {
println e
}
}
}
idea 反编译结果
public void funcA() {
try {
try {
int a = 1 + 1;
} catch (Exception var6) {
DefaultGroovyMethods.println(this, var6);
Object var10000 = null;
}
} finally {
;
}
}
上面没问题,大概能根据反编译的代码看出原始代码。
如果在 catch 块中添加 return 语句
@CompileStatic
class TestGroovy {
void funcA() {
try {
def a = 1 + 1
} catch (e) {
println e
return
}
}
}
idea 反编译无法反编译
public void funcA() {
// $FF: Couldn't be decompiled
}
使用 jd.gui 进行反编译,能正常反编译,而且变量名更友好。
public void funcA() {
try {
int a = 1 + 1;
} catch (Exception e) {
DefaultGroovyMethods.println(this, e);
null;
return;
} finally {}
}
idea 2019.03
所以如何能让 idea 的反编译达到 jd.gui 这种效果呢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.