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();