Java プロジェクトのバイト コードを観察すると、次のバイト コードが表示されます。
java.lang.Object.()V
java.lang.Boolean.(Z)V
<init>()Vと<init>(Z)Vの意味は何ですか?
java.lang.Object.()V
引数を取らないvoid メソッド ( V
)です。java.lang.Object
java.lang.Boolean.(Z)V
java.lang.Boolean
単一のboolean
( is であるZ
ため) 引数を取るvoid メソッドです。B
byte
要するに、
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
これはすべて、JVM で使用されるバイトコードのメソッド シグネチャです。
<init>()V and <init>(Z)V
コンストラクターの署名です。JVM コンストラクターは他のメソッドと同様に、常に ) である名前と、常に(void を意味する)<init>
である戻り値を持ちます。V
この場合、パラメータ (は のために予約されています)をZ
意味しますboolean
B
byte
あれは
<init>(Z)V
クラス Test のバイトコードの意味
class Test {
Test(boolean arg0) {
}
}
あなたも会うことができます
static <clinit>()V
これは、静的初期化ブロックを意味します
static {
...
}