Yak*_*man 0 java constructor creation object execution
我最近在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);
} }
Run Code Online (Sandbox Code Playgroud)
现在,当我在构造函数之前移动对象的创建时,即我在一行中完成它,然后一切正常.
任何人都可以向我解释为什么会发生这种情况,以及我对代码的理解是错误的?
提前致谢.
除了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);
}
}
Run Code Online (Sandbox Code Playgroud)
另请注意,编译器永远不会抛出异常.区分编译时错误(语法错误等)和执行时错误(通常是异常)非常重要.