科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道改写equals的时候遵守约定

改写equals的时候遵守约定

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  在java里面object equals()的概念是两个引用指向的是同一个对象,即两者指向同一个对象,才equals()。但是也有特例,比如说一些原始类型,integer,string等属于值相等。就是说,值相等,也就equals()了。实际上。

作者:中国IT实验室 来源:中国IT实验室 2007年9月25日

关键字: 编程 java

  • 评论
  • 分享微博
  • 分享邮件

  在java里面object equals()的概念是两个引用指向的是同一个对象,即两者指向同一个对象,才equals()。但是也有特例,比如说一些原始类型,integer,string等属于值相等。就是说,值相等,也就equals()了。实际上,他们都改写了object的equals()方法。但是”类型安全”的值类不需要改写equals()。
  
  还有,当我们当前的类有特定的”相等”的定义的时候,而且我们的超类并没有改写equals()方法,就需要改写equals()方法了。
  
  改写的规范-object必须满足:
  
  1. 自反
  2. 对称
  3. 传递
  4. 一致
  5. X非空,x.equals(null)返回false
  
  为了实现高质量的equals()改写,effective java提醒我们要注意一下几点:
  1. 使用==操作符检查是否指向同一个对象,这是一个性能优化的手段。
  2. 使用instanceof来检查是否为某个类,同样也是性能优化的手段。
  3. 把实参转换到正确的类型,上面一步保证了这一步不会有错误。
  4. 检查类里的每一个关键域是否都相等。
  
  还有要注意的就是,改写equals()方法的同时,都要改写hashcode方法。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件