1

是直接使用 Java 字段还是使用访问器方法更好?同一班内。

例子:

private ArrayList<String> list;

list.get(0);

或者

getList().get(0);
4

4 回答 4

6

在同一个类中可以直接访问成员,封装和隐藏是为了类外的。

当您考虑它时,无论如何您都可以直接访问它:

private void useList()
{
    String temp = getList().get(0); // access "via accessor" ----------+
    System.out.println(temp);                                          |
}                                                                      |
                                                                       |
public ArrayList<String> getList()                                     |
{                                                                      |
    return theList; // but you actually directly access it here...  <--+
}
于 2012-05-06T07:11:53.647 回答
2

通过方法访问成员(也可以从同一个类中访问它们)使您的代码更易于维护。考虑在您的班级的未来版本中,列表不再存储在该班级中,而是存储在其他位置。或者,列表中的值可能是派生的,而您希望当场派生列表。在这种情况下,“getter/setter”方法可以节省工作、错误和重复代码。您只需在 getter 中编写新逻辑,就可以开始了!因此,如果需要可维护性,请使用 getter 和 setter。

于 2012-05-06T08:46:26.817 回答
1

你应该做你认为更简单或更清晰的事情。

一旦代码预热,性能差异就没有了。它测试了我在更简单的情况下所做的测试,平均差异可能小于 0.1 ns。

于 2012-05-06T07:30:09.753 回答
1

实际上存在使用访问器方法更好的情况,但仅限于为扩展设计的类。例如,这在 Spring Framework 的代码中非常常见。您可以编写一个protected访问器方法,然后您的 API 的客户端可以覆盖并提供完全不同的东西而不是您的私有字段。

于 2012-05-06T08:10:37.247 回答