具有不同返回类型的吸气剂是否有资格作为吸气剂?

时间:2012-03-17 04:35:47

标签: java getter-setter

我有一个名为

的变量

List<String> names;

如果我有像

这样的方法

Iterator getNames() { return names.iterator(); }

技术上它仍然是一个getter方法因为我把它改成Iterator吗?

4 个答案:

答案 0 :(得分:4)

尽管JDK允许这样做,但这不是一个好主意。

首先,有一些基于命名方法的约定,它们对它们有一些依赖性。

  1. JavaBean对象使用getter和setter来设置bean属性。如果他们不遵守惯例,程序将失败。请参阅JavaBeans spec, section 8.3.1

  2. JSON对象 - JSONObject类使用构造函数中的访问器方法。 请参阅:http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object

  3. 如果某些JPA实现有多个具有相同名称但返回类型不同的getter,则会错误地处理您的实体类。

  4. 我敢打赌,有更多的依赖关系,但即使这些不适用于您的解决方案,为了便于阅读,遵循惯例仍然是明智的。您不希望任何其他开发人员在将来某个时候诅咒您违反标准:)

答案 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的字段。这是您的类业务,封装提供了:将数据结构隐藏到其他类中的能力。

抱歉打字错误,手机..