Effective Java
小豆瓣的靳先生
这个作者很懒,什么都没留下…
展开
-
第5条:避免创建不必要的对象
一、一般来说,最好能重用对象而不是在每次需要的时候就创建一个相同功能的新对象。 String s = new String("stringette");//DON'T DO THIS //改进后的版本: String s = "stringette"; 二、对于同时提供了静态工厂方法和构造器的不可变类,通常可以使用静态工厂方法而不是构造器,以避免创建不必要的对面。 三、除了重用不可变的对...原创 2018-09-18 11:43:54 · 153 阅读 · 0 评论 -
第6条:消除过期的对象引用
一、清空对象引用应该是一种例外,而不是一种规范行为。 二、一般而言,只要类是自己管理内存,程序员就应该警惕内存泄漏问题。一旦元素被释放掉,则该元素中包含的任何对象引用都应该被清空。 三、内存泄漏的另一个常见来源是缓存。 四、内存泄漏的第三个常见来源是监听器和其他回调。...原创 2018-09-18 11:54:54 · 271 阅读 · 0 评论 -
第7条:避免使用终结方法
一、终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的 —— 会导致行为不稳定、降低性能,以及可移植性问题。 二、当一个对象变得不可达的时候,一般用try-finally块来完成类似的工作。 三、终结方法的缺点在于不能保证会被及时地执行。——从一个对象变得不可到达开始,到它的终结方法被执行,所花费的这段时间是任意长的。 四、不应该依赖终结方法来更新重要的持久状...原创 2018-09-18 15:05:41 · 165 阅读 · 0 评论 -
第1条:考虑用静态工厂方法代替构造器
一、对类而言,获取自身一个实例的方法: 通过公有的构造器 通过类提供的公有的静态工厂方法 二、静态工厂方法对比构造器的优势: 它们有名称 不必在每次调用他们得时候都创建一个新对象 它们可以返回原返回类型的任何子类型的对象——例如:Java Collection Framework、java.util.EnumSet、JDBC API 服务提供者框架中三个重要的组件:服务接口、提供者注册...原创 2018-09-13 11:55:00 · 156 阅读 · 0 评论 -
第2条:遇到多个构造器参数时要考虑用构建器
一、静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。 二、重叠构造器模式:重叠构造器模式可行,但是当有许多参数的时候,客户端代码会很难编写,并且仍然较难以阅读。 三、JavaBeans模式:遇到许多构造器参数的时候,可以JavaBeans模式——在这种模式下,调用一个无参构造器来创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数; 缺点一:...原创 2018-09-13 21:31:17 · 298 阅读 · 0 评论 -
第3条:用私有构造器或者枚举类类型强化Singleton属性
一、公有final域静态成员 //Singleton with public final field public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {.....} public void leaveTheBuilding() {.....} ...原创 2018-09-14 10:22:05 · 170 阅读 · 0 评论 -
第4条:通过私有构造器强化不可实例化的能力
不可实例化——包含私有构造器 //Noninstantiable utility class public class UtilityClass { //Suppress default constructor for noninstantiability private UtilityClass() { throw new AssertionError(); ...原创 2018-09-14 10:48:10 · 221 阅读 · 0 评论