equals two objects but it's false
本问题已经有最佳答案,请猛点这里访问。
我一直在尝试用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
您的输出是正确的:如果使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | public class Baby { String name; Baby(String myName) { name = myName; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Baby other = (Baby) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public static void main(String[] args) { Baby s1 = new Baby("a"); Baby s2 = new Baby("a"); System.out.println(s2.equals(s1)); System.out.println(s1 == s2); } } |
哦,别忘了重写
如果
看到这个问题:Java中的=VS相等()是什么区别?
这就解释了
或者这个有用的视频。
除非重写equals,否则它将告诉您s1和s2确实是不同的对象。他们是两个不同的婴儿,恰好有相同的名字。:)