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()你怎么称呼它