所以我有一个关于“setter”和“getter”方法的问题,以及它们是否有用。
假设我只是编写了一个非常基本的程序,如下所示:
public class Account
{
String name;
String address;
double balance;
}
然后,假设我编写了另一个使用这个“Account”类的类,如下所示:
class UseAccount
{
public static void main(String[] args)
{
Account myAccount = new Account();
Account yourAccount = new Account();
myAccount.name = "Blah blah"
}
}
等等等等
当我编写 myAccount.name = "Blah blah"
时,我正在更改“Account”类中变量“name”的值。我可以自由地按照我喜欢的方式编写代码多次执行此操作。然而,我注意到,更好的做法是将“Account”类中的变量设为私有(private),然后使用“setter”和“getter”方法。所以如果我写以下内容:
public class Account
{
private String name;
private String address;
private String balance;
public void setName(String n)
{
name = n;
}
public String getName()
{
return name;
}
}
我仍然可以通过创建另一个具有类似内容的类来更改变量“name”的值:
class UseAccount
{
public static void main(String[] args)
{
Account myAccount = new Account();
myAccount.setName("Blah blah");
}
}
我不明白使用此方法有何不同或应该防止人们改变私有(private)字段的值。有帮助吗?
最佳答案
普通访问器方法除了样式没有区别,但是你也可以用它们执行代码,例如:
public void setName(String name) {
if (name == null) {
throw new IllegalArgumentException("Name may not be null");
}
this.name = name;
}
您还可以从 getter 返回副本,从而保护您的数据:
private List<String> middleNames;
public List<String> getMiddleNames() {
return new ArrayList<String>(middleNames); // return a copy
// The caller can modify the returned list without affecting your data
}
这只是两个简单的示例,但是关于如何使用访问器方法的示例不计其数。
最好遵循一致的风格,这就是为什么我们总是使用 getters/setters - 这样的代码可以在需要时执行。
关于java - Java 中的访问器方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498287/