关注对象公共方法

hashcode

默认对象在内存中的存储地址
用来配合hashSet 等集合框架,put的时候,快速判断不存在用的,hashcode一样再比equal。(小心:equal一样的对象一定要有一样的hashcode,可以使用equal中的相关属性的hashcode,否则hashMap分分钟给你空指针)

equal

比一样的值的。比如你和我一样是P6,但是你的P6是你的P6,不是一个,但是值是一样的。
复用集合时重要方法,覆盖equal时一定要覆盖hashcode不然集合框架就不工作了。

==

比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

toString

默认返回 类+hashcode。一定要覆盖toString,反馈对象的属性,他只在调试和日志中其诊断作用,反馈更多的内容,方便api使用者诊断问题。在单元测试中也起重要作用!

  public String toString() {
        return MoreObjects.toStringHelper(this).omitNullValues()
                .add("name", name)
                .add("sex", sex)
                .toString();
    }

clone

忽略这个方法,自己在外部自己写 T copy(T)的逻辑来替代clone。这个clone方法危险,分分钟出故障

comparable

考虑实现comparable接口,他的compareTo方法,还有大小关系,是eqaul的很好的补充

上一篇:【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 一 )


下一篇:你真的有处理好异常吗