有时候,我们需要查看 IDEA 编译后的 class 文件是什么样子的,字节码不太能看得懂,就需要再进行反编译。怎么做呢?
项目的目录下有一个 target,根据报名找到对应的 class 文件双击打开即可。
IDEA 默认会使用 Fernflower 对字节码文件进行反编译。反编译后的内容如下所示。
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.cmower.java_demo.stackoverflow;
public class Cmower1 {
public Cmower1() {
}
public static void main(String[] args) {
String[] names = new String[]{"沉", "默", "王", "二"};
String[] var2 = names;
int var3 = names.length;
for(int var4 = 0; var4 < var3; ++var4) {
String name = var2[var4];
System.out.println(name);
}
}
}
源文件长什么样子呢?
package com.cmower.java_demo.stackoverflow;
public class Cmower1 {
public static void main(String[] args) {
String[] names = { "沉", "默", "王", "二" };
for (String name : names) {
System.out.println(name);
}
}
}
可以看得出,javac 会帮助我们对源文件进行一些编译优化。比如说:
1){}声明的数组最终还是用的 new 关键字。
2)增强的 for 循环最终还是变成了普通的 for 循环语句。
最近才开始使用 IDEA,遇到不少小问题,我一一总结了一下。大佬们请略过。