当我看到我的Java项目的字节码,我看到下面的字节码:
java.lang.Object中。()V
java.lang.Boolean的。(Z)
什么是<初始化>()V和<初始化>(Z)V的含义
当我看到我的Java项目的字节码,我看到下面的字节码:
java.lang.Object中。()V
java.lang.Boolean的。(Z)
什么是<初始化>()V和<初始化>(Z)V的含义
java.lang.Object.()V
是空隙方法( V
上) 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
见JNI类型签名的更多细节。
JNI用类型签名的Java虚拟机的代表。 表3-2示出了这些类型的签名。
表3-2 Java虚拟机类型签名
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
是construtor签名。 对于JVM构造是一样的任何其它方法,它们有一个名称,它总是<init>
),和一个返回值,这始终是V
(意味着无效)。 在我们的例子Z
意味着boolean
参数( B
保留用于byte
)
那是
<init>(Z)V
在课堂上测试的字节码的手段
class Test {
Test(boolean arg0) {
}
}
也可以配合
static <clinit>()V
这意味着静态初始化块
static {
...
}