gpt4 book ai didi

java - JAVA 对象创建之前不执行构造函数代码

转载 作者:行者123 更新时间:2023-12-01 07:33:26 25 4
gpt4 key购买 nike

我最近在玩java代码,遇到了这个问题,构造函数中的代码似乎没有被执行,因为编译器抛出了NullPointerException。

public class ObjectA {

protected static ObjectA oa;
private String message = "The message";

public ObjectA() {

oa = new ObjectA();

}

public static void main(String args[]) {

System.out.println(oa.message);

} }

现在,当我将对象的创建移到构造函数之前,即我在一行中完成它时,一切都会正常工作。

谁能向我解释为什么会发生这种情况,以及我对代码的理解错误在哪里?

提前致谢。

最佳答案

您永远不会调用 ObjectA() 构造函数,除了ObjectA 构造函数中。如果您确实调用了构造函数(例如,从main),您将遇到堆栈溢出,因为您将永远递归。

目前尚不清楚您要做什么或为什么使用静态变量,但您的代码会更简单,如下所示:

public class ObjectA {
private String message = "The message";

public static void main(String[] args) {
ObjectA oa = new ObjectA();
System.out.println(oa.message);
}
}

另请注意,编译器永远不会引发异常。区分编译时错误(语法错误等)和执行时错误(通常是异常)非常重要。

关于java - JAVA 对象创建之前不执行构造函数代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15365019/

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