美文网首页
所有对象通用的方法equals

所有对象通用的方法equals

作者: 卑鄙的程序 | 来源:发表于2017-03-22 21:56 被阅读0次

    Object虽然是一个具体类,但是设计它的是为了扩展。所有非final方法:(equals、toString、hachCode、clone、finalize)都有明确的约定(contract)


    equals:方法实现等价关系:

    ·自反性: 任何非null的引用值x. x.equals(x)必须返回true

    ·对称性: 任何非null的引用值x,y. x.equals(y)等于true.那么y.equsls(x)必须等于true

    ·传递性: 任何非null的引用值x,y,z. x.equals(y)等于true, y.equals(z)等于true,那么x.equals(z)必须等于true

    ·一致性: 任何非null的引用值x,y. 两对象equals操作所用的属性信息未修改,多次调用equals方法会一致的返回true.或者一致的返回false

    ·任何非null的引用值x, x.equals(null)必须返回null


    避免重写equals导致的错误,最容易避免的就是不重写,类的每个实例只与它自身相等。满足一下情况正是期望的结果:

    ·类的每一个实例本质是唯一的

    ·不关心类的“逻辑相等”

    ·超类已经重写了equals,从超类继承的行为同样适用

    相关文章

      网友评论

          本文标题:所有对象通用的方法equals

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