编写一个比较完美的equals方法的建议(java)
2015-07-07 21:07
639 查看
1.显示参数命名为otherObject,稍后需要将它转换成另一个叫做other的变量。
2.检测this与otherObject是否引用同一个对象:
if(this==otherObject) return true;
这条语句只是一个优化。实际上,这是一种经常采用的额形式。因为计算这个灯饰要比一个一个地比较类中的域所付出的代价小很多。
3.检测otherObject是否为null,如果为null,返回false。这项检测是很必要的
if(otherObject==null) return false;
4.比较this与otherObject是否输入同一个类。如果equals的语意在每个子类中有所改变,就要使用geiClass检测
if(getClass()!=otherObject.getClass()) return false;
如果所有的自雷都拥有统一的语意,就使用instanceof检测
if(!(otherObject instanceof ClassName)) return false;
5将otherobject 转换为相应的类类型变量
ClassName other =(ClassName) otherObject;
6.现在开始对所有需要比较的域进行比较了。使用==比较基本类型域,使用equals比较对象域。如果所有的域都匹配,就返回true.否则返回false
return field1==other.field1&& Objects.equals(field2,other.field2)&.....;
如果在子类中重新定义equals,就要在其中包含调用super.equals(other)
tips:对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否相等
2.检测this与otherObject是否引用同一个对象:
if(this==otherObject) return true;
这条语句只是一个优化。实际上,这是一种经常采用的额形式。因为计算这个灯饰要比一个一个地比较类中的域所付出的代价小很多。
3.检测otherObject是否为null,如果为null,返回false。这项检测是很必要的
if(otherObject==null) return false;
4.比较this与otherObject是否输入同一个类。如果equals的语意在每个子类中有所改变,就要使用geiClass检测
if(getClass()!=otherObject.getClass()) return false;
如果所有的自雷都拥有统一的语意,就使用instanceof检测
if(!(otherObject instanceof ClassName)) return false;
5将otherobject 转换为相应的类类型变量
ClassName other =(ClassName) otherObject;
6.现在开始对所有需要比较的域进行比较了。使用==比较基本类型域,使用equals比较对象域。如果所有的域都匹配,就返回true.否则返回false
return field1==other.field1&& Objects.equals(field2,other.field2)&.....;
如果在子类中重新定义equals,就要在其中包含调用super.equals(other)
tips:对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否相等
相关文章推荐
- java学习12--函数--函数定义和功能
- Rectangle Area
- Java数组练习题小结
- Java基础之多态性
- eclipse下给jar增加源代码
- 使用JAVA连接access 2003
- 将数字字符串转换为int型
- Java-ReentrantReadWriteLock的简单例子
- Java编程思想 - 类型信息与反射机制
- Java.lang.Long.parseLong()方法
- 【源代码】java.util.LinkedList
- MYSQY数据库类型与Java类型的对比图(收藏使用)
- 总结eclipse中安装maven插件
- Spring 下载
- eclipse执行debug as出现问题
- Hadoop格式化HDFS报错java.net.UnknownHostException: localhost.localdomain: localhost.localdomain
- javamail
- Java设计模式---单例模式
- Java基础-----Java引用
- SpringMVC动态项目创建是有感叹号!