Unterschied zwischen Bytecode .init () V vs .init (Z) V

8

Wenn ich meinen Java-Projekt-Byte-Code beobachte, sehe ich den folgenden Byte-Code:

java.lang.Object. () V

java.lang.Boolean. (Z) V

Was ist die Bedeutung von & lt; init & gt; () V und & lt; init & gt; (Z) V

    
saeediqbal 06.02.2013, 04:57
quelle

2 Antworten

13
%Vor%

ist eine void-Methode ( V ) für java.lang.Object , die keine Argumente benötigt.

%Vor%

ist eine ungültige Methode für java.lang.Boolean , die ein einzelnes boolean ( Z seit B ist byte ) Argument verwendet.

Kurz gesagt,

%Vor%

Weitere Informationen finden Sie unter JNI-Typ-Signaturen .

  

Der JNI verwendet die Java VM-Repräsentation von Typ-Signaturen. Tabelle 3-2 zeigt diese Typensignaturen.

     

Tabelle 3-2 Java-VM-Typ-Signaturen

%Vor%      

Zum Beispiel die Java-Methode:

%Vor%      

hat die folgende Typsignatur:

%Vor%
    
Mike Samuel 06.02.2013 04:58
quelle
3

Es sind alle Methodensignaturen in Bytecode, die von JVM verwendet werden.

<init>()V and <init>(Z)V sind Konstrukteursignaturen. Für JVM-Konstruktoren gibt es genauso wie für alle anderen Methoden, sie haben einen Namen, der immer <init> ist, und einen Rückgabewert, der immer V ist (bedeutet void). In unserem Fall bedeutet Z % boolean -Parameter ( B ist reserviert für byte )

das ist

%Vor%

in Klasse Test Bytecode bedeutet

%Vor%

Sie können auch treffen

%Vor%

bedeutet statischen Initialisierungsblock

%Vor%     
Evgeniy Dorofeev 06.02.2013 05:14
quelle

Tags und Links