9

Java プロジェクトのバイト コードを観察すると、次のバイト コードが表示されます。

java.lang.Object.()V

java.lang.Boolean.(Z)V

<init>()V<init>(Z)Vの意味は何ですか?

4

2 に答える 2

15
java.lang.Object.()V

引数を取らないvoid メソッド ( V)です。java.lang.Object

java.lang.Boolean.(Z)V

java.lang.Boolean単一のboolean( is であるZため) 引数を取るvoid メソッドです。Bbyte

要するに、

 abc.def.WXYZ(IIIIIIIIIIIIII)J
 ^            ^              ^ 
 target_class argument-types return_type

詳細については、 JNI 型シグネチャを参照してください。

JNI は、型シグネチャの Java VM の表現を使用します。表 3-2 は、これらの型シグネチャを示しています。

表 3-2 Java VM タイプの署名

Type Signature             Java Type
Z                          boolean
B                          byte
...
L fully-qualified-class ;  fully-qualified-class
[ type                      type[]
( arg-types ) ret-type      method type

たとえば、Java メソッドは次のようになります。

long f (int n, String s, int[] arr); 

次の型シグネチャがあります。

(ILjava/lang/String;[I)J
于 2013-02-06T04:58:35.620 に答える
4

これはすべて、JVM で使用されるバイトコードのメソッド シグネチャです。

<init>()V and <init>(Z)Vコンストラクターの署名です。JVM コンストラクターは他のメソッドと同様に、常に ) である名前と、常に(void を意味する)<init>である戻り値を持ちます。Vこの場合、パラメータ (は のために予約されています)をZ意味しますbooleanBbyte

あれは

<init>(Z)V

クラス Test のバイトコードの意味

class Test {

    Test(boolean arg0) {
    }
}

あなたも会うことができます

 static <clinit>()V

これは、静的初期化ブロックを意味します

static {
...
}
于 2013-02-06T05:14:09.013 に答える