小编Dan*_*Dan的帖子

equals()一般契约的哪一部分我的等于()不满足

我对java很新,我只是想了解@Override一下这些equals()hashcode()方法.
我知道equals方法要正确,它需要:

  1. 自反: a.equals(a)
  2. 对称: a.equals(b) 然后 b.equals(a)
  3. 传递: a.equals(b) && b.equals(c) 然后 a.equals(c)
  4. 不为空: ! a.equals(null)

我在努力确定上述属性中的哪一个并且在编写equals方法的上面时并不满意.

我知道eclipse可以为我生成这些,但是因为我还没有完全理解这个概念,所以写出来可以帮助我学习.

我已经写出了我认为正确的方法,但是当我查看eclipse生成的版本时,我似乎"缺少"某些方面.

例:

public class People {

    private Name first; //Invariants --> !Null, !=last
    private Name last;  // !Null, !=first
    private int age;    // !Null, ! <=0
    ...
}
Run Code Online (Sandbox Code Playgroud)

我写的:

public boolean equals(Object obj){
    if (obj == null){
        return false;
    }
    if (!(obj instanceof People)){
         return false;
    }
    People other = (People) obj;
    if (this.age != …
Run Code Online (Sandbox Code Playgroud)

java eclipse equals

17
推荐指数
1
解决办法
769
查看次数

标签 统计

eclipse ×1

equals ×1

java ×1