`

java核心技术读书笔记

阅读更多

一:编写一个完美的equals方法的建议:

1.显示参数命名为otherObject,稍后需要对它转换成另一个叫做other的变量。

2.检测this与otherObject是否引用同一个对象。

     if(this==otherObject) return true;

3.检测otherObject是否为null, 如果为null,返回false.这项检测是很必要的。

     if(otherObject==null) return false;

比较this与otherObject是否属于同一个类,如果equalsd的语义在每个子类中又所改变,就使用getClass检测:

     if(getClass()!=otherObject.getClass()) return false;

如果所有的子类都拥有统一的语义,就使用instanceof检测:

     if(!(otherObject instanceof ClassName)) return false;

4.将otherObject转换为相应的类类型变量:

    ClassName other=(ClassName)otherObject

5.现在开始对所有需要比较的域进行比较了。使用==比较基本类型域,使用equals比较对象域。如果所有的域都匹配,就返回true;否则就返回false.

     return field1==other.field1&&field2.equals(other.field2)&&.....

如果在子类中重新定义equals,就要在其中包含调用super.equals(other).

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics