【发布时间】:2010-12-07 13:52:26
【问题描述】:
在 Java 中的 equals(Object o) 方法中,我可以访问传入对象的私有变量,而无需通过其公共 getter。
public boolean equals(Object o){
...
MyObject other = (MyObject)o;
return getProp() == other.prop;
}
怎么样?
【问题讨论】:
标签: java protection
在 Java 中的 equals(Object o) 方法中,我可以访问传入对象的私有变量,而无需通过其公共 getter。
public boolean equals(Object o){
...
MyObject other = (MyObject)o;
return getProp() == other.prop;
}
怎么样?
【问题讨论】:
标签: java protection
私有数据可由该类的任何实例访问,即使 A 类的一个实例正在访问 A 的另一个实例的私有成员。请务必记住,访问修饰符(私有、 protected, public) 正在控制 class 访问,而不是 instance 访问。
【讨论】:
可能的答案是可见性模型的设计者认为在一个类中工作的任何开发人员都必须掌握整个类的实现。
但这是一个坏主意。这会鼓励不良做法。在类Person 中访问Person 字段的开发人员不必知道整个类的实现。好的做法是使用访问器,而不必知道访问器执行什么操作。
【讨论】: