类中的Java字段和访问器方法

时间:2012-05-06 07:10:13

标签: java field accessor

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

示例:

private ArrayList<String> list;

list.get(0);

getList().get(0);

4 个答案:

答案 0 :(得分: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...  <--+
}

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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