[英]Does a getter with a different return type qualify as a getter?
我有一个变量叫做
List<String> names;
如果我有类似的方法
Iterator getNames() { return names.iterator(); }
从技术上讲,我还是将其更改为Iterator还是一种吸气方法?
即使JDK允许这样做,也不是一个好主意。
首先,有一些基于方法命名的约定,这些约定对它们有一些依赖性。
JavaBean对象使用getter和setter设置bean属性。 如果他们不遵守约定,程序将失败。 参见JavaBeans规范,第8.3.1节
JSON对象-JSONObject类在构造函数中使用accessor方法。 请参阅: http : //www.json.org/javadoc/org/json/JSONObject.html#JSONObject(java.lang.Object )
如果某些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.