gpt4 book ai didi

java - 真的有必要调用 java.lang.Object 构造函数吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:54:34 24 4
gpt4 key购买 nike

我最近安装了字节码大纲 Eclipse 插件,发现我的测试类

public class Test {
}

调用 java.lang.Object 的构造函数

public class Test {
public <init>()V
L0
LINENUMBER 15 L0
ALOAD 0
INVOKESPECIAL java/lang/Object.<init>()V
RETURN
L1
LOCALVARIABLE this LTest; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
}

INVOKESPECIAL java/lang/Object.<init>() V表示调用java.lang.Object的构造函数

这有什么意义吗?通过java.lang.Object字节码判断

  public <init>()V
L0
LINENUMBER 37 L0
RETURN
MAXSTACK = 0
MAXLOCALS = 1

它什么都不做。刚回来。

最佳答案

它必须满足 section 4.9.2关于结构约束的 JVM 规范:

Each instance initialization method (§2.9), except for the instance initialization method derived from the constructor of class Object, must call either another instance initialization method of this or an instance initialization method of its direct superclass super before its instance members are accessed.

现在,对于 Object 的直接子类的类,规则可以放宽 - 但我怀疑它是否有任何好处,并且会不优雅(IMO)。如果 Object 构造函数确实在未来执行了一些初始化怎么办?您真的想要一个允许您绕过它的规范吗?

关于java - 真的有必要调用 java.lang.Object 构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com