【问题标题】:Why can I access my private variables of the "other" object directly, in my equals(Object o) method为什么我可以在我的 equals(Object o) 方法中直接访问“其他”对象的私有变量
【发布时间】: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


    【解决方案1】:

    私有数据可由该类的任何实例访问,即使 A 类的一个实例正在访问 A 的另一个实例的私有成员。请务必记住,访问修饰符(私有、 protected, public) 正在控制 class 访问,而不是 instance 访问。

    【讨论】:

    • 啊,我明白了,我一定会在 JLS 中寻找这个
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      相关资源
      最近更新 更多