我如何解释java程序集?

时间:2012-06-21 07:31:32

标签: java

  // Method descriptor #8 ()V
  // Stack: 3, Locals: 1
  public EGLConfig();
     0  aload_0 [this]
     1  invokespecial java.lang.Object() [1]
     4  new java.lang.RuntimeException [2]
     7  dup
     8  ldc <String "Stub!"> [3]
    10  invokespecial java.lang.RuntimeException(java.lang.String) [4]
    13  athrow
      Line numbers:
        [pc: 0, line: 4]
      Local variable table:
        [pc: 0, pc: 14] local: this index: 0 type: javax.microedition.khronos.egl.EGLConfig
}

任何人都可以“阅读”这个吗?

1 个答案:

答案 0 :(得分:5)

Java Virtual Machine Specification记录了Java字节码指令的含义以及JVM如何处理它们。

当翻译成Java时,它看起来像这样:

// Constructor of class EGLConfig
public EGLConfig() {
    super();
    throw new RuntimeException("Stub!");
}

逐行:

 0  aload_0 [this]
 1  invokespecial java.lang.Object() [1]

在堆栈上推送this(对当前对象的引用)并调用超类的构造函数,即Object

 4  new java.lang.RuntimeException [2]
 7  dup
 8  ldc <String "Stub!"> [3]
10  invokespecial java.lang.RuntimeException(java.lang.String) [4]

创建一个新的RuntimeException对象并调用其构造函数,该构造函数采用String;它传入字符串"Stub!"

13  athrow

引发RuntimeException