我正在为一个类编写equals(Object obj)
函数。我发现可以从调用者访问obj
的私有字段。因此,我不使用getter:
Odp other = (Odp) obj;
if (! other.getCollection().contains(ftw)) {
}
我可以直接访问该字段:
Odp other = (Odp) obj;
if (! other.collection.contains(ftw)) {
}
这是不好的实践吗?
我正在为一个类编写equals(Object obj)
函数。我发现可以从调用者访问obj
的私有字段。因此,我不使用getter:
Odp other = (Odp) obj;
if (! other.getCollection().contains(ftw)) {
}
我可以直接访问该字段:
Odp other = (Odp) obj;
if (! other.collection.contains(ftw)) {
}
这是不好的实践吗?
我倾向于始终使用getter,因为有时getter不仅仅是“return(foo)”。有时它们会在为空时初始化一些内容,或者在其中包含一些调试日志,或者以某种方式验证当前状态。这样更加一致。
我认为这不是一种不好的做法,而是语言的一个特性。它不仅允许您以您想要的方式测试equals
,而且在原型模式中用于对象创建也非常有用。
这很好并且完全正常。认为this
可以操纵other
的私有字段有点奇怪,但没关系,因为就算第三方能够干扰Odp
对象的内部,也不会发生任何坏事。Odp
类的任何方法都可以修改任何Odp
对象的私有成员,甚至是非this
对象的私有成员,但没关系,因为这样的方法显然是可以信任的!