java某抽象类A中需要匿名初始化一个同类型的成员变量,
public class Main { public static void main(String[] args) { new B(); } } abstract class A { A a = new A() {//同类型成员变量 @Override void do_sth() { System.out.println("do nothing"); } }; abstract void do_sth(); } class B extends A{ @Override void do_sth() { System.out.println("doing B"); } }
java.lang.StackOverflowError 直接栈溢出了
创建B对象时,也创建了A对象里的匿名内部类,该内部类又创建了自己的内部类,导致无限递归。
尽量不要用匿名内部类作为成员变量,如果要用,一定注意是否包含无限递归的可能。