public class Cloning {

    Cloning c=new Cloning();
    public static void main(String[] args) {

        Cloning c=new Cloning();
        c.print();
    }

    public void print(){
        System.out.println("I am in print");
    }

}

在上面的代码中,我有一个简单的类和一个类级别的实例,也有一个具有相同名称的本地实例。运行上面的代码时,出现以下异常:
Exception in thread "main" java.lang.StackOverflowError
    at com.java8.Cloning.<init>(Cloning.java:6)

最佳答案

您的main方法创建一个Cloning实例(Cloning c=new Cloning();),这会导致实例变量c(Cloning c=new Cloning();)的初始化,这会创建另一个Cloning实例,依此类推...

您有无限的构造函数调用链,这导致生成StackOverflowError



您没有类(class)级别的实例。您有一个实例级别的实例。如果要一个类级别的实例,请更改

Cloning c=new Cloning();


static Cloning c=new Cloning();

07-26 00:30