有谁知道为什么在Java 6中不推荐使用JSR/RET字节码对?
我在网上发现的唯一有意义的解释是,他们通过运行时进行代码分析更难以执行.有谁知道另一个原因?
我知道这个调试信息在编译时包含在.class文件中:
javac -g Main.java
Run Code Online (Sandbox Code Playgroud)
并且可以从以下LineNumberTable:部分手动观察:
javap -c -constants -private -verbose '$<' > '$@'
Run Code Online (Sandbox Code Playgroud)
我想要的是javap在字节码的中间显示源.
样本输入:
public class New {
public static void main(String[] args) {
System.out.println(new Integer(1));
}
}
Run Code Online (Sandbox Code Playgroud)
实际javap产量:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: new #3 // class java/lang/Integer
6: dup
7: iconst_1
8: invokespecial #4 // Method java/lang/Integer."<init>":(I)V
11: invokevirtual #5 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
14: return
LineNumberTable:
line 3: 0
line 4: 14
Run Code Online (Sandbox Code Playgroud)
期望的javap输出:
System.out.println(new Integer(1));
0: getstatic #2 // …Run Code Online (Sandbox Code Playgroud)