java – 为什么我在构造函数中收到StackOverflowError异常

前端之家收集整理的这篇文章主要介绍了java – 为什么我在构造函数中收到StackOverflowError异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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.

In the above code I have a simple class and a class level instance

您没有类级别实例.您有一个实例级实例.如果需要类级实例,请更改

Cloning c=new Cloning();

static Cloning c=new Cloning();

猜你在找的Java相关文章