直接使用Java字段还是更好地使用访问器方法?在同一个班级内。
示例:
private ArrayList<String> list;
list.get(0);
或
getList().get(0);
答案 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的客户端可以覆盖并提供完全不同的内容,而不是您的私有字段。