答案 0 :(得分:10)
您所看到的只是所有方法和字段声明。由于静态块有点像方法,因此您只能看到静态初始化器的空声明。
如果您在第40行查看java.lang.Object
的{{3}},代码实际上就是这样说的
public class Object {
private static native void registerNatives();
static {
registerNatives();
}
静态块的一个简单解释是,无论您创建的类型对象有多少,该块只会被称为一次。
如果您想从命令行获取更多信息,javap -verbose java.lang.Object
会输出此
static {};
descriptor: ()V
flags: ACC_STATIC
Code:
stack=0, locals=0, args_size=0
0: invokestatic #16 // Method registerNatives:()V
3: return
LineNumberTable:
line 41: 0
line 42: 3
}
或者,更简洁javap -c java.lang.Object
static {};
Code:
0: invokestatic #16 // Method registerNatives:()V
3: return
如果您想了解registerNatives()
的内容,可以阅读这篇文章。