39

在 Java 中的 equals(Object o) 方法中,我可以访问传入对象的私有变量,而无需通过其公共 getter。

public boolean equals(Object o){
    ...
    MyObject other = (MyObject)o;
    return getProp() == other.prop; 
}

怎么样?

4

2 回答 2

61

该类的任何实例都可以访问私有数据,即使 A 类的一个实例正在访问 A 的另一个实例的私有成员。重要的是要记住访问修饰符(私有、受保护、公共)控制的是访问,而不是实例访问。

于 2009-10-17T05:28:02.160 回答
1

可能的答案是可见性模型的设计者认为在一个类中工作的任何开发人员都必须掌握整个类的实现。

但这是个坏主意。这会鼓励不良做法。Person访问类中 的字段的开发人员Person不必知道整个类的实现。好的做法是使用访问器,而不必知道访问器做了什么操作。

于 2013-08-21T09:44:36.207 回答