Java中的equals()方法Java认证考试
文章作者 100test 发表时间 2010:01:01 15:53:02
来源 100Test.Com百考试题网
equals()方法应该具以下特性:
1.自反的:对任何x,x.equals(x)应该返回true.
2.对称的:对于x,y,x.equals(y)返回true,当且仅当y.equals(x)返回true.
3.传递的:对x,y,z,x.equals(y)和y.equals(z)返回true,则x.equals(z)返回true.
4.一致的:对x,y,多次调用x.equals(y)应该一致的返回true或false,如果在等价比较中的信息没有被改变的.
5.对于非空的对象x,x.equals(null)应该返回false.
根据此和一,以下语句通常会被写在equals()方法里:
Java代码
if(obj == this) return true.来源:www.examda.com
程序员通常会写如下语句:
Java代码
if( obj instanceOf 当前类){
//todo
}
如果当前类没有子类,则没有问题。否则有可能与规则2相冲突,因为子类对象也是父类对象的一个实例。
解决方法:
Java代码
if(obj == null) return false.
if(obj.getClass() != this.getClass()){
return false.
}
//TODO