我在执行以下代码时遇到“堆栈溢出”异常。
我正在制作“匿名内部类”。

public class Prac_RegularInnerClass {
    public static void main(String args[])
    {
        Child1 c1=new Child1();
        c1.method4();
    }
}

class Parent1{
    public int z=10;
    public void method1()
    {
        System.out.println("We are in Method 1!!!!!!!!!\n\n");
    }

    public void method2()
    {
        System.out.println("We are in Method 2!!!!!!!!!\n\n\n");
    }
}

class Child1 extends Parent1{
    //Anonymous Inner class.
    Parent1 p1=new Child1(){
        public void method1()
        {

        }
    };

    public void method4()
    {
        p1.method1();
        p1.method2();

    }
}


我已经将父类设为Parent1。我做了一个智利班Child1。
谁能解释?

最佳答案

这可能是因为在构造阶段的Child1中,您将p1属性设置为Child1本身的匿名子类,这使新的Child1对象实例化,这使新的Child1对象实例化,使新的Child1对象实例化,从而使新的Child1对象实例化,依此类推。

取而代之的是,要么在构造新对象后分配它们,要么分配一个不以递归结尾的不同类型的对象。

10-08 01:24