容易忽略的equals顺序问题
2017-03-25 00:00
387 查看
我们在用equals时常常不注意这个问题,a.equals(b)和b.equals(a)能一样么?答案是不一样!因此用的时候多注意不同的顺序,我也看到过说用getClass的,我不同意这种用法,毕竟getClass就屏蔽了好多子类。
public class EqualsDemo { public static void main(String[] args) { Father father = new Father("HS"); Son son1 = new Son(1001, "HS"); Son son2 = new Son(1002, "HS"); System.out.println(son1.equals(son2)); System.out.println(son1.equals(father)); System.out.println(son2.equals(father)); System.out.println(father.equals(son1)); } } class Father { private String name; public Father(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (obj instanceof Father) { Father that = (Father) obj; return this.name.equals(that.name); } return false; } } class Son extends Father { private int id; public Son(int id, String name) { super(name); this.id = id; } @Override public boolean equals(Object obj) { if (obj instanceof Son) { Son that = (Son) obj; return this.id == that.id && super.equals(that); } return false; } }
1001 false false false true
相关文章推荐
- ASP中Request对象获取客户端数据的顺序(容易忽略)
- DataTable添加列时容易被忽略的问题!
- 使用时容易忽略SQL Server的21个问题
- 容易被忽略的细节(2):使用泛型类和泛型方法解决【动态类型】问题
- 看了,容易被忽略的细节(1):config文件的使用 ,我也谈谈这个简单的问题
- jdbc终极解惑~兼初学者在登录sql容易忽略的问题
- 网页开发中的容易忽略的问题 javascript HTML中的table
- 使用时容易忽略SQL Server的21个问题
- 容易被忽略的问题1
- [转载]大型项目管理的容易忽略的一些问题
- 写存储过程中遇到的简单但是容易忽略的问题
- 使用时容易忽略SQL Server的21个问题
- VSTO 开发Word时,引用其它library时容易忽略的问题。
- 软件架构设计时容易忽略的几个重要问题
- Web测试中容易被忽略的Charset问题
- ASP中Request对象获取客户端数据的顺序(容易忽略)
- 使用时容易忽略SQL Server的21个问题
- .NET 开发中容易被忽略的问题--MDA
- 关于ajax的debug小记一则--小问题往往容易被忽略
- 网页开发中的容易忽略的问题 javascript HTML中的table