0

不変メソッドについて調べてみましたが、まだ理解できません。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;
  }
}
4

1 に答える 1

0

Java には const 修飾子がありません。「getBalance()」メソッドがクラスを変更しないことをコンパイラーに伝えることはできません。

mutator メソッドが含まれているため、クラス自体は不変ではありません。また、BankAccount を変更可能にすることはおそらく良い考えです。ただし、インスタンスを不変にしたい場合は、次の方法で実行できます。

  • 修飾子メソッドの削除
  • フィールドを final としてマークする
  • クラスの最終的なマーキング
  • 受け取ったオブジェクトと返されたオブジェクトの防御コピーを作成します。(この場合、受信または返されるオブジェクトはありません。)
于 2013-04-29T00:04:51.933 に答える