zoukankan      html  css  js  c++  java
  • equals方法的小结

    尽管经常使用equals,也可能理解不一定神,最近又要使用Collections.sort看到了这些,总结的不错。

    首先equals方法必须满足自反性、对称性、传递性和一致性。

    自反性(x.equals(x)必须返回true)、

    对称性(x.equals(y)返回true时,y.equals(x)也必须返回true)、

    传递性(x.equals(y)和y.equals(z)都返回true时,x.equals(z)也必须返回true)

    和一致性(当x和y引用的对象信息没有被修改时,多次调用x.equals(y)应该得到同样的返回值),

    而且对于任何非null值的引用x,x.equals(null)必须返回false。

    实现高质量的equals方法的诀窍包括:

    1. 使用==操作符检查"参数是否为这个对象的引用";

    2. 使用instanceof操作符检查"参数是否为正确的类型";

    3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;

    4. 编写完equals方法后,问自己它是否满足对称性、传递性、一致性;

    5. 重写equals时总是要重写hashCode;

    6. 不要将equals方法参数中的Object对象替换为其他的类型,在重写时不要忘掉@Override注解(可以不写,但写了利大于弊)。

     我只是大自然的搬运工。打个小广告,销售儿童早教产品,为了娃买套吧,哈哈。http://yandz.com/mr/ar.html

    岁月留痕
  • 相关阅读:
    Nginx 服务器安装及配置文件详解
    Linux 之 压缩解压缩
    RPM方式安装MySQL5.6
    Linux 之 搜索
    zabbix客户端安装
    JAVA输出指定目录下的子目录和子文件
    LoadRunner 11 安装破解
    SVN合并操作实践
    (转)SVN分支/合并原理及最佳实践
    MYSQL 免安装版(windows 7/64)
  • 原文地址:https://www.cnblogs.com/navigate/p/5445463.html
Copyright © 2011-2022 走看看