【发布时间】:2016-05-15 18:34:45
【问题描述】:
【问题讨论】:
-
能否请您用相关代码的实际文本替换该图像?
-
那只是一个静态初始化器,基本上...
-
@MUSTKEEMMANSURI 你刚刚在你的问题中问了这个问题。没有必要发表评论说同样的话。
标签: java static-block
【问题讨论】:
标签: java static-block
您正在查看的只是所有方法和字段声明。由于静态块有点像一个方法,你只会看到静态初始化器的空声明。
如果你在第 40 行查看 OpenJDK source code 的 java.lang.Object,代码实际上是这样写的
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() 的作用,可以阅读这篇文章。
【讨论】: