equals

作者: kindol | 来源:发表于2018-04-23 11:02 被阅读0次

    Java语言规范对equals方法的要求有如下:

    1. 自反性——x.equals(x)为真
    2. 对称性——x.equals(y)与y.equals(x)返回结果相同
    3. 传递性——x.equals(y)且y.equals(z)则x.equals(z)
    4. 一致性——x.equals(y)结果要一直一样
    5. 对于任意的非空引用值x,x.equals(null)必须返回假。

    编写一个完美的equals方法的步骤:(需要注意的是,传入的参数类型应该是Object类型,而不是相应的类类型,否则无法覆盖Object中的equals方法)

    1. 判断是否为相同的引用
    2. 判断传入的object是否为null
    3. 比较是否为同一个类,使用getClass或者instanceOf(当所有子类的语义一致时)
    4. 将传入的object转换为对应的类类型
    5. 进行相应的变量域比较

    一般地,覆盖equals方法也需要覆盖hashCode方法,主要是为了一些集合类中的正常使用

    相关文章

      网友评论

          本文标题:equals

          本文链接:https://www.haomeiwen.com/subject/usmklftx.html