gpt4 book ai didi

java - 在ArrayList中存储对象时出错

转载 作者:行者123 更新时间:2023-12-01 10:51:02 25 4
gpt4 key购买 nike

现在正在完成一项作业,可以帮助理解我一直无法理解的概念。

特别是,我必须创建一个 ArrayList 来保存两个 Account 对象,然后使用该列表来收集输入。不幸的是,当我尝试将这些对象存储到 ArrayList 中时,其中之一给我带来了问题。

import java.util.ArrayList;

public class InheritanceTest {

private class Account {
//Constructor
Account() {
// Initialize balance
int balance = 0;
}
}

private class CheckingAccount extends Account {
}

private class SavingsAccount extends Account {
}

public static void main(String[] args) {
ArrayList<Account> Bank = new ArrayList<Account>();
CheckingAccount checking1 = new CheckingAccount();
Bank.add(checking1);
SavingsAccount savings = new SavingsAccount();
Bank.add(savings);
}
}

实例化新的 CheckingAccount 对象的命令工作正常,但是一旦我将帐户插入 Bank.add() ,新的 CheckingAccount object 抛出“无法访问 InheritanceTest 类型的封闭实例。必须使用 InheritanceTest 类型的封闭实例来限定分配(例如 x.new A(),其中 x 是 InheritanceTest 的实例)。”错误。我想有一些我无法找到的基本概念。我将所有类声明为静态,这使我能够进行编译,但我读过的内容让我认为这不是正确的方法。

最佳答案

您的问题有三种可能的解决方案。

首先,您可以将内部类的静态...

public class InheritanceTest {

private static class Account {

//Constructor
Account() {
// Initialize balance
int balance = 0;
}
}

private static class CheckingAccount extends Account {
}

private static class SavingsAccount extends Account {
}

public static void main(String[] args) {
ArrayList<Account> Bank = new ArrayList<Account>();
CheckingAccount checking1 = new CheckingAccount();
Bank.add(checking1);
SavingsAccount savings = new SavingsAccount();
Bank.add(savings);
}
}

或者您需要创建 InheritanceTest 的实例并使用它来创建内部类

import java.util.ArrayList;

public class InheritanceTest {

private class Account {

//Constructor
Account() {
// Initialize balance
int balance = 0;
}
}

private class CheckingAccount extends Account {
}

private class SavingsAccount extends Account {
}

public static void main(String[] args) {
InheritanceTest test = new InheritanceTest();
ArrayList<Account> Bank = new ArrayList<Account>();
CheckingAccount checking1 = test.new CheckingAccount();
Bank.add(checking1);
SavingsAccount savings = test.new SavingsAccount();
Bank.add(savings);
}
}

或者将每个类分离到它自己的类文件中

这基本上是因为没有外部类的实例就无法创建非静态内部类

关于java - 在ArrayList中存储对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com