![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective-java
tjk922215
职业信息是对与职业有关的所有信息的统称,完整的职业信息包括职业资源信息、职业新闻信息、职业政策信息、职业测评信息等。
展开
-
第2条:遇到多个构造器参数时要考虑用构建器
术语: 重叠构造器(telescoping construct)模式:就是提供多个构造函数。 JavaBeans模式:这种模式实际上是先调用无参的构造函数来创建对象,然后再调用属性的setter方法来进行相应设置。 Builder模式:这种模式下不直接生成需要的对象,而是让客户端利用所有必要的参数调用构造器(或静态工厂方法)。得到一个builder对象,然后客户端在builde原创 2017-12-13 11:28:08 · 133 阅读 · 0 评论 -
第3条:用私有构造器或者枚举类型强化Singleton属性
采用私有构造器来强化Singleton属性 顾名思义,即我们需要定义一个private的构造器,但要注意一点,即使我们定义了私有的构造器,但是客户端还是可以借助AccessibleObject.setAccessible方法,通过反射来调用私有的构造器,因此,我们需要修改构造器来抵御这种工具,下面代码很好阐述了这个。 public class Singleton { privat原创 2017-12-14 21:01:56 · 179 阅读 · 0 评论 -
第1条:考虑用静态工厂方法代替构造器
首先我们先看下一个类RandomIntBuilder,用来创建随机的Int整数 public class RandomIntBuilder { private final int min; private final int max; public int next() {...} } 接下来我们来加入几个构造器来看看 复制代码 public RandomIntBu原创 2017-12-14 20:29:45 · 193 阅读 · 0 评论 -
第4条:通过私有构造器来强化不可实例化能力
场景: 在创建工具类的时候,大部分是无需实例化的,实例化对它们没有意义。在这种情况下,创建的类,要确保它是不可以实例化的。 存在问题: 在创建不可实例化的类时,虽然没有定义构造器。但是,客户端在使用该类的时候,依然可以实例化它。客户端,可以继承该类,通过实例化其子类来实现实例化;客户端可以调用默认的构造器来实例化该类。 要避免这个问题,使用的方式是,定义一个私有的构造器: p原创 2017-12-18 20:15:57 · 213 阅读 · 0 评论 -
第5条:避免创建不必要的对象
一般来说,最好是重用对象而不是在每次需要的时候就创建一个相同功能的新对象。重用方式既更加快速,也更为流行。如果对象是不可变的(immutable)(见第15条),它就始终可以被重用。 作为一个极端的反面例子,考虑下面的语句: String s = new String("hello world"); // DON'T DO THIS! 该语句每次被执行的时候都创建一个新的String实例,原创 2017-12-18 20:25:12 · 242 阅读 · 0 评论 -
第6条:消除过期的对象引用
当你从手工管理内存的语言(比如C或C++)转换到具有垃圾回收功能的语言的时候,程序员的工作会变得更加容易,因为当你用完了对象之后,它们会被自动回收。当你第一次经历对象回收功能的时候,会觉得这简直有点不可思议。这很容易给你留下这样的印象,认为自己不再需要考虑内存管理的事情了。其实不然。 考虑下面这个简单的栈实现的例子: public class Stack{ private Object原创 2017-12-18 20:34:12 · 225 阅读 · 0 评论