
EffectiveJava
文章平均质量分 77
无名同学
不到南山终不休
展开
-
静态工厂方法代替构造器
静态工厂方法的优势: 1它们有名称,表意更清楚。 2不必在每次调用它们的时候都创建一个新对象 3它们可以返回原返回类型的任何子类型的对象。 4在创建参数化类型实例的时候,它们是代码变得更加简单。 缺点: 1类如果不含有公有的或者受保护的构造器,就不能被子类化 2它们与其他的静态方法实际上没有任何区别,不方便辨认。 服务提供者框架简介: 服务提供者框架有三个重要的组件:服务原创 2017-07-15 10:53:03 · 264 阅读 · 0 评论 -
多个构造器参数时要考虑用构建器
当一个类有大量的可选属性是,要考虑用构建器替代构造器,构造器模式会让类的实例化变得太过复杂。 构建器可以见名之意,并且有很大的灵活性。 构建器构造对象不直接生成想要的对象,而是让客户端利用所有必要的参数调用构造器(或者静态工厂), 得到一个builder对象。然后客户端在builder对象上调用类似于setter的方法,来设置每个相关的可选参数。 最后,客户端调用无参的build方法来生成原创 2017-07-15 11:38:18 · 237 阅读 · 0 评论 -
用私有构造器或者枚举类型强化Singleton属性
实现Singleton一般方法: public class Elvis implements Serializable{ private static final Elvis INSTANCE=new Elvis(); private Elvis(){ } public static Elvis getInstance(){ return原创 2017-07-15 12:32:28 · 225 阅读 · 0 评论 -
覆盖equals时总要覆盖hashCode
在每一个覆盖了equals方法的类中,也必须覆盖hashcode方法。如果不这么做的话,就会违反Object.hashcode的通过约定, 从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括HashMap,HashSet和HashTable. Object默认的hashCode是按地址所在的位置返回数据的,所以只要不是同一个对象,就会产生不同的结果,刚好和本身的equals方法原创 2017-07-15 20:25:56 · 336 阅读 · 0 评论 -
Comparable与Comparator的区别
转自:http://blog.youkuaiyun.com/mageshuai/article/details/3849143 Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现转载 2017-07-15 21:23:58 · 203 阅读 · 0 评论