如何更改此类以创建不可变的方法?

问题描述:

我试图阅读不可变的方法,但我仍然不明白。 我想将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; 
    } 
} 

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

该类本身并不是不可变的,因为它包含了增变器方法。 BankAccount可能是可以修改的。但是,如果你想实例是不可变的,你可以通过这样做:

  • 删除修改方法
  • 标记最终
  • 领域打标级决赛
  • 使接收返回的对象的防守副本。 (在这种情况下,没有收到或返回的物品。)
+0

我明白了。你能举一个例子来说明其中的一个,所以我可以更好地理解? – user2330350 2013-04-29 00:20:23

+0

这里有两个:public final class BankAccount {private final final double balance; – 2013-04-29 01:37:48