我在执行以下代码时遇到“堆栈溢出”异常。
我正在制作“匿名内部类”。
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对象实例化,依此类推。
取而代之的是,要么在构造新对象后分配它们,要么分配一个不以递归结尾的不同类型的对象。