我有一个如下所示的java文件:
package answers;
class finalRed{
private long l;
public synchronized void increment(){
l++;
}
public void decrement(){
synchronized(this){
l--;
};
}
}
我需要查看每个方法的字节码,我知道我应该使用javap命令。我需要这样的输出:
public synchronized void increment();
Code:
0: aload_0
1: dup
2: getfield #2 // Field l:J
5: lconst_1
6: ladd
7: putfield #2 // Field l:J
10: return
public void decrement();
Code:
0: aload_0
1: dup
2: astore_1
3: monitorenter
4: aload_0
5: dup
6: getfield #2
9: lconst_1
10: lsub
11: putfield #2
14: aload_1
15: monitorexit
16: goto 24
19: astore_2
20: aload_1
21: monitorexit
22: aload_2
23: athrow
24: return
但是,运行 javap -c C:\Users\Ask\Git\ITUProj\PCPP-private-Garse\week01\code\answers\finalRed.class
(我可以阅读,应该可以工作),使我这个输出:
Compiled from "finalRed.java"
public class answers.finalRed {
public answers.finalRed();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
}
实际上这两个方法都没有显示任何代码。用-v或-verbose运行javap也没有帮助。我应该如何运行命令来获取类中两个方法的实际字节码?
我的java版本是12.01
暂无答案!
目前还没有任何答案,快来回答吧!