我有一个名为
的变量 List<String> names;
如果我有像
这样的方法
Iterator getNames()
{
return names.iterator();
}
技术上它仍然是一个getter方法因为我把它改成Iterator吗?
答案 0 :(得分:4)
尽管JDK允许这样做,但这不是一个好主意。
首先,有一些基于命名方法的约定,它们对它们有一些依赖性。
JavaBean对象使用getter和setter来设置bean属性。如果他们不遵守惯例,程序将失败。请参阅JavaBeans spec, section 8.3.1
JSON对象 - JSONObject类使用构造函数中的访问器方法。 请参阅:http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object)
如果某些JPA实现有多个具有相同名称但返回类型不同的getter,则会错误地处理您的实体类。
我敢打赌,有更多的依赖关系,但即使这些不适用于您的解决方案,为了便于阅读,遵循惯例仍然是明智的。您不希望任何其他开发人员在将来某个时候诅咒您违反标准:)
答案 1 :(得分:2)
从设计的角度来看,这对我来说似乎是一个坏主意。
我只会有一个吸气剂public List<String> getNames()
。
对于“安全发布”,您应该考虑在实现中返回列表的副本:
public List<String> getNames() {
return new ArrayList<String>(names);
}
答案 2 :(得分:2)
如果你的类会被一些bean工具所反省,getNames()应该返回名字。 为清楚起见,请将其命名为:
getNamesIterator();
答案 3 :(得分:1)
你正在考虑其他方面。 getXxx形式的方法是getter。 Java约定并不意味着您必须具有名为xxx的字段。这是您的类业务,封装提供了:将数据结构隐藏到其他类中的能力。
抱歉打字错误,手机..