Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
145 views
in Technique[技术] by (71.8m points)

java - stackoverflow error when creating object outside the main method

While running this code it shows Stackoverflow error. What is it I am doing wrong, why does the code compile?

public class Foo {
    int a = 5;
    Foo f = new Foo();

    void go() {
        System.out.println(f.a);
    }

    public static void main(String[] args) {
        Foo f2 = new Foo();
        f2.go();
    }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Foo f=new Foo();

You create an instance of Foo, with a variable which itself is an instance of Foo, and initialize it in the constructor.

This causes infinite recursion of constructor invokations, untill your stack is out of space.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...