如何更改此类以创建不可变的方法?
问题描述:
我试图阅读不可变的方法,但我仍然不明白。 我想将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可能是可以修改的。但是,如果你想实例是不可变的,你可以通过这样做:
- 删除修改方法
- 标记最终
- 领域打标级决赛
- 使接收返回的对象的防守副本。 (在这种情况下,没有收到或返回的物品。)
我明白了。你能举一个例子来说明其中的一个,所以我可以更好地理解? – user2330350 2013-04-29 00:20:23
这里有两个:public final class BankAccount {private final final double balance; – 2013-04-29 01:37:48