1
  // 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
}

誰でもこれを「読む」ことができますか?

4

1 に答える 1

5

Java仮想マシン仕様には、Javaバイトコード命令の意味とJVMがそれらを処理する方法が記載されています。

Javaに変換すると、次のようになります。

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

1行ずつ:

 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ます。

于 2012-06-21T07:33:58.680 に答える