关注对象公共方法
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的很好的补充

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阅读手札:《Android开发艺术探索》(二)
在 《阅读手札:《Android开发艺术探索》(一)》中主要介绍了Activity的生命周期以及异常处理、启动模式、意图过滤器。本篇文章主要介绍的是《Android开发艺术探索》的第二章 IPC机制 个人评语:第二章的内容非常多(第二章近90页内容),内容有IPC机制基本概念;序列化Serializable、Parcelable;Binder;实现IPC的多种方式;Binder连接池内容非常多,但还是要耐着性子分析完。 IPC基本概念: IPC、是英文 Inter-Process-Communication的缩写,翻译过来就是跨进程通信或者进程间通信、进程简单理解就是一个应用或者一个程序、而线程是进程的最小执行单元,关于线程、必须要理清的Java线程池(原创)这里有近万字的详细描述。那什么情况会考虑跨进程的通信,毕竟任何概念的设计出现都是为了解决问题以及应用实践而诞生的。 一般来说,跨进程通信的实现理由分为两种: A:某些原因下自身需要多进程来实现,如:特殊原因需要运行在独立的线程;或者为了加大一个应用的内存来获取更大的内存空间提高运行流畅度(参考某Q的做法) B:当前应用为了获取其他...
- 下一篇
关注类和接口
最小化可访问性 1:包括方法,属性,内部类,提供最少方法的接口供外部使用。2:一个类如果只被另一个类使用,应该作为类的内部类3:可以default 方便测试类访问,不能超过default了。 不要有public属性 提供private 和一个public方法 最小化可变性 不可变类好处,随便被各个类引用,随便被多线程并发,随便被使用对象提供的时候就设置好了属性,不提供set方法final class防止子类提供set方法,构造器私有,提供静态方法(valueOf()等)final修饰属性,仅在构造函数提供设置机会,完全完成初始化private修饰属性,防止被访问可变属性中,不要引用不可变属性 复合优于继承 为了复用代码,最好是互相引用,而不是继承,父类稍微改一下就爆炸 慎用继承 继承破坏了封装性,能不用就不用。1:一般final class2:非要继承,请提示好哪些方法可以覆盖,哪些方法是不能动的。3:abstract class 和interface ,除外。他们可以很好的使用继承 接口优于抽象类 类只能单继承,可以多实现接口,所以接口更灵活,更加随意。抽象类的单继承,觉得了多个抽象...
相关文章
文章评论
共有0条评论来说两句吧...