Java 在类本身中创建实例
当赋值语句在Java 在类本身中创建实例,java,instantiation,Java,Instantiation,当赋值语句在第4行执行时,编译器会忽略新运算符,并保持foo变量为null,还是会发生其他事情来处理这个尴尬的时刻 public class Foo { // creating an instance before its constructor has been invoked, suppose the "initializing" // gets printed in constructor as a result of the next line, of course it wi
第4行执行时,编译器会忽略新运算符,并保持foo
变量为null,还是会发生其他事情来处理这个尴尬的时刻
public class Foo {
// creating an instance before its constructor has been invoked, suppose the "initializing"
// gets printed in constructor as a result of the next line, of course it will not print it
private Foo foo = new Foo();//Line 4
public Foo() {
System.out.println("initializing");
}
}
编译器在这里没有做任何特殊的事情。它可能会警告您,这是行不通的,但这很难确定
你会得到一个堆栈溢出错误
public class Foo {
private Foo foo = new Foo();//Line 4
public Foo() {
System.out.println("initializing");
}
public static void main(String... args) {
Foo foo = new Foo();
}
}
印刷品
Exception in thread "main" java.lang.StackOverflowError
at Foo.<init>(Foo.java:9)
at Foo.<init>(Foo.java:7)
at Foo.<init>(Foo.java:7)
.. many deleted ...
at Foo.<init>(Foo.java:7)
at Foo.<init>(Foo.java:7)
线程“main”java.lang.StackOverflower中出现异常
at Foo.(Foo.java:9)
at Foo.(Foo.java:7)
at Foo.(Foo.java:7)
.. 删除了很多。。。
at Foo.(Foo.java:7)
at Foo.(Foo.java:7)
我猜会发生什么。。。。我没有意识到排序的重要性。你试过这个代码吗?没有main()你怎么称呼它