Java 可以将mutator方法应用于ArrayList中的对象吗?

Java 可以将mutator方法应用于ArrayList中的对象吗?,java,arrays,mutation,Java,Arrays,Mutation,我的java程序遇到了一些问题,我不确定这是否是问题所在,但对araylist中的对象调用mutator方法是否能如期工作 比如说 public class Account { private int balance = 0; public Account(){} public void setAmount(int amt) { balance = amt; } } public class Bank { ArrayLis

我的java程序遇到了一些问题,我不确定这是否是问题所在,但对araylist中的对象调用mutator方法是否能如期工作

比如说

public class Account
{
    private int balance = 0;

    public Account(){}

    public void setAmount(int amt)
    {
         balance = amt;
    }
}


public class Bank
{
    ArrayList<Account> accounts = new ArrayList<Account>();

    public staic void main(String[] args)
    {
        accounts.add(new Account());
        accounts.add(new Account());
        accounts.add(new Account());

        accounts.get(0).setAmount(50);
    }
}
公共类帐户
{
私人整数余额=0;
公共帐户(){}
公共无效设置金额(整数金额)
{
余额=金额;
}
}
公营银行
{
ArrayList accounts=新的ArrayList();
公用staic void main(字符串[]args)
{
账户。添加(新账户());
账户。添加(新账户());
账户。添加(新账户());
账户。获取(0)。设置金额(50);
}
}
这会按预期工作吗?或者有什么东西会导致这不工作吗

是问题所在,但对ArrayList中的对象调用mutator方法是否会按预期工作?

是的,如果您打算更新列表中的第一个帐户请记住,数组列表不存储对象,而是存储对对象的引用。对其中一个对象进行变异不会更改列表中存储的引用

第一个帐户将被更新,当再次引用
accounts.get(0)
时,它将显示更新的余额

这里有一个演示。(我刚刚修正了一些小错误,比如在
账户
声明前面添加
静态
。)


希望这就是您所期望的。

是的,这应该会按预期的方式工作。这无异于:

Account firstAccount = accounts.get(0);
firstAccount.setAmount(50);
请记住,
ArrayList
get()
方法返回存储在
ArrayList
中的实际对象,而不是它的副本

Balance of account 0: 50
Balance of account 1: 0
Balance of account 2: 0
Account firstAccount = accounts.get(0);
firstAccount.setAmount(50);