当我观察我的Java项目字节代码时,我看到以下字节代码:
java.lang.Object中。()V
java.lang.Boolean的。(Z)V
< init>()V 和< init>(Z)V
的含义是什么答案 0 :(得分:13)
java.lang.Object.()V
是V
上的void方法(java.lang.Object
),不带任何参数。
java.lang.Boolean.(Z)V
是java.lang.Boolean
上的一种无效方法,只需boolean
Z
B
byte
} abc.def.WXYZ(IIIIIIIIIIIIII)J
^ ^ ^
target_class argument-types return_type
。{/ p>
简而言之,
Type Signature Java Type
Z boolean
B byte
...
L fully-qualified-class ; fully-qualified-class
[ type type[]
( arg-types ) ret-type method type
有关详细信息,请参阅JNI Type Signatures。
JNI使用Java VM的类型签名表示。表3-2显示了这些类型的签名。
表3-2 Java VM类型签名
long f (int n, String s, int[] arr);
例如,Java方法:
(ILjava/lang/String;[I)J
具有以下类型签名:
{{1}}
答案 1 :(得分:3)
这是JVM使用的字节码中的所有方法签名。
<init>()V and <init>(Z)V
是construtor签名。对于JVM构造函数与任何其他方法一样,它们具有名称,始终为<init>
),并且返回值始终为V
(表示无效)。在我们的案例中,Z
表示boolean
参数(B
保留给byte
)
即
<init>(Z)V
在类Test中的字节码意味着
class Test {
Test(boolean arg0) {
}
}
你也可以见面
static <clinit>()V
表示静态初始化块
static {
...
}