返回顶部

收藏

equals方法范例

更多

由于Object类默认提供的equals方法,只是比较对象的地址,即其比较的结果和"=="的结果是一样的.

而实际应用中,对象是否相等是由对象特征所决定的,由此Object提供的equal方法,不可用,需要重写.

而写equals方法,应试满足下列条件:

自反性:对任意X,X.equals(X)一定返回为true;

对称性:对任意X,Y,如果X.equals(Y)为true,那么Y.equals(X)也必须为true;

传递性:对任意X,Y,Z,如果X.equals(Y)为true,Y.equals(Z)为true,那么X.equals(Z)也必须true;

一致性:对任意X,Y,如果对象中用于比较的信息,没有发生改变,那么无论调用多少次X.equals(Y),或者Y.equals(X),其结果必须是一样的.要么 一直为true,要么一直为false;

对任何不是null的X,X.equals(null),必须为false;

另:有部分人在equals()方法中,用了instanceof运算,但是其有一定问题.

instanceof判断是的前面对象为否为类的实例或其子类,如果则返回true.

package com.study;

public class Dog {
    int id;
    String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    public boolean equals(Object obj) {
        //同一对象直接返回true;
        if (this == obj) {
            return true;
        }
        //只有当obj不为空,且为当前类时,才做对象特征比较
        if (obj != null && obj.getClass() == Dog.class) {
            Dog dog = (Dog) obj;
            if (this.getId() == dog.getId()) {
                return true;
            }
        }
        return false;
    }
}
//该片段来自于http://outofmemory.cn

标签:java,基础

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 糖果 发表 2015-08-03 20:25:16 逆向基础(十三) JAVA (三)
  2. 博主 发表 2013-03-12 14:17:00 Java基础学习之Enum
  3. Terry Zhang 发表 2014-04-18 05:19:53 [NIO.2] 编写一个文件移动应用
  4. Terry Zhang 发表 2014-05-13 06:28:25 [集合框架] SortedMap 接口
  5. 逍遥冲 发表 2014-02-16 15:32:11 Java8新特性Date和Time
  6. root 发表 2015-04-26 02:40:02 Java 基础:认识&理解关键字 native 实战篇
  7. 博主 发表 2013-03-22 16:26:00 Java基础知识之泛型
  8. Terry Zhang 发表 2014-05-04 12:29:21 [集合框架] Queue 接口
  9. 博主 发表 2013-03-27 17:01:00 Java基础知识之Annotation
  10. Terry Zhang 发表 2014-04-20 15:36:04 [正则] 预定义字符类型
  11. 博主 发表 2017-04-04 08:28:15 Java注解的基础与高级应用
  12. Terry Zhang 发表 2014-05-03 06:47:05 [集合框架] Deque 接口

发表评论