为什么StackOverflowError出现在下面的场景中?

时间:2015-09-24 03:50:18

标签: java stack-overflow

public class B {

    public static void main(String[] args) {
        A a = new A();
    }
}

public class A {

    A b = new A();
}

2 个答案:

答案 0 :(得分:1)

因为每个return Customers.Values.AsQueryable().Where(expression); 都会创建一个名为A的内部字段b。这是无限的重新定义,因为要创建A,您还必须创建b(添加另一个A)。因为初始化程序被复制到默认构造函数,所以您的示例等同于

b

答案 1 :(得分:0)

我不明白你的要求。为什么在同一个类中声明实例变量。它的行为就像一个递归循环。从main方法开始,它将尝试创建类A的对象,并且在该对象创建期间,它将尝试初始化变量" a"。因此,它将再次创建A的另一个实例,依此类推。