如何更改此类以生成不可变方法?

时间:2013-04-29 00:00:34

标签: java immutability account bank

我试着阅读不可变的方法,但我仍然不明白。 我想将BankAccount类的方法更改为不可变的,我该怎么做?

public class BankAccount
{
  private double balance;

  public BankAccount()
  {
    balance = 0;
  }

  public BankAccount(double initialBalance)
  {
    balance = initialBalance;
  }

  public void deposit(double amount)
  {
    balance = balance + amount;
  }

  public void withdraw(double amount)
  {
    balance = balance - amount;
  }

  public double getBalance()
  {
    return balance;
  }
}

1 个答案:

答案 0 :(得分:0)

Java没有const限定符。你无法告诉编译器“getBalance()”方法不会修改类。

类本身不是不可变的,因为它包含mutator方法。对BankAccount进行修改可能是一个好主意。但是,如果您希望实例是不可变的,您可以通过以下方式实现:

  • 删除修饰符方法
  • 将字段标记为最终
  • 将课程标记为最终
  • 制作收到并退回的物品的防御性副本。 (在这种情况下,没有收到或返回任何对象。)