繁体   English   中英

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

[英]Does a getter with a different return type qualify as a getter?

我有一个变量叫做

List<String> names;

如果我有类似的方法

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

从技术上讲,我还是将其更改为Iterator还是一种吸气方法?

即使JDK允许这样做,也不是一个好主意。

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

  1. JavaBean对象使用getter和setter设置bean属性。 如果他们不遵守约定,程序将失败。 参见JavaBeans规范,第8.3.1节

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

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

我敢打赌,还有更多的依赖项,但是即使这些依赖项不适用于您的解决方案,出于可读性考虑,遵循约定也是明智的。 您不希望任何其他开发者在将来的某个时间骂您违反标准:)

从设计的角度来看,这对我来说似乎是个坏主意。

我只需要一个getter public List<String> getNames()

对于“安全发布”,您应该考虑在实现中返回列表的副本

public List<String> getNames() {
    return new ArrayList<String>(names);
}

如果您的类将由某些Bean工具进行内部检查,则getNames()应该返回名称。 为了清楚起见,将其称为:

getNamesIterator();

您正在反过来思考。 形式为getXxx的方法是一个吸气剂。 Java约定并不意味着您必须具有一个名为xxx的字段。 这是您的类业务,封装提供了:将数据结构隐藏到其他类的能力。

对不起,错字,手机。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM