【问题标题】:Stack Overflow error when attempting to create array尝试创建数组时出现堆栈溢出错误
【发布时间】:2013-10-04 00:58:31
【问题描述】:

我正在尝试创建一个包含 10 个 Account 对象的数组,但是当我尝试运行它时,我收到了 Stack Overflow 错误。我不知道为什么我会收到错误,而 Google 也没有提出任何建议。谢谢你的帮助。

import java.util.Scanner;

public class Account {

private int id;
private double balance;
private Scanner input = new Scanner(System.in);
private Account[] atm = new Account[10];

public Account(){
    id = 0;
    balance = 0;

    for (int i = 0; i < atm.length; i++){
        atm[i] = new Account(); //Here is where Eclipse says the problem is
        atm[i].setID(i);
        atm[i].setBalance(100.0);
        }
}

【问题讨论】:

    标签: java arrays stack-overflow


    【解决方案1】:

    让我们看看会发生什么:当你创建一个 Account 对象时,它会创建一堆新的 Accounts,每个 Accounts 都会创建更多 Accounts,每个 Accounts 都会创建更多 Accounts,每个 Accounts 都会创建更多 Accounts,每个其中创建更多帐户,每个帐户创建更多...

    你在这里看到一个模式吗?它被称为无限递归,或者至少在堆栈内存用完之前 - 这会导致 StackOverflowException。

    现在寻求解决方案:
    我不会让我的 Account 类保存一个 Account 数组,而是将该数组放在另一个类中,比如 AccountCollection 或 Accounts,如果所有的 Accounts 都由一个客户持有,甚至可能是 Customer。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2014-05-04
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多