![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
digvwell
这个作者很懒,什么都没留下…
展开
-
高效Java01:考虑使用静态工厂方法代替构造方法
Java中的每一个类被创建,大部分场景中客户端都需要获取它自身的一个实例然后进行使用,我们最常用的是为它提供一个公有的构造方法,除此之外还可以使用静态工厂方法返回它的一个实例。相较于构造方法,静态工厂方法拥有以下好处:它们拥有不同的自定义名称调用它时无需重复创建新对象它们可以返回类型的任何子类型的对象创建参数化类型实例的时候,它们使代码更加简洁(JDK1.7以后就不算优势了)静态工厂方法优原创 2017-03-20 22:58:46 · 265 阅读 · 0 评论 -
高效Java02:构造方法参数较多时考虑使用构建器
假设某一业务场景(Scene)中有一个类,它有3个属性是必须的,另外还有20个属性是可选的。重叠构造器通常我们最先想到的是像下面这样创建一个类:public class BusinessBean { private String requiredFiled1; private String requiredFiled2; private String requiredFile原创 2017-03-20 23:00:10 · 411 阅读 · 0 评论 -
高效Java03:使用私有构造器或枚举类型强化单例属性
单例(singleton)指仅仅只能被实例化一次的类,主要服务于一些需要保证对象只存在一个实例的场景。实现方式一:暴露公有静态成员变量public class Singleton { public static final Singleton INSTANCE = new Singleton(); private Singleton() { }}INSTANCE为对外暴露的成原创 2017-03-20 23:01:10 · 299 阅读 · 0 评论 -
高效Java04:通过私有构造方法强化不可实例化的能力
在代码编写过程中我们可能会编写一些只包含静态成员的类,这些类一般都是工具类,这些类实例化没有任何意义,我们可以将其做成不可实例化的类。public class UtilityClass { private UtilityClass() { throw new AssertionError(); }}我们将构造方法设为私有,该类不会在外部被实例化,但在类的内部仍能够对原创 2017-03-20 23:02:04 · 357 阅读 · 0 评论 -
高效Java05:避免创建不必要的对象
就像我们大部分人所知道的,最好能重用对象,而不是每次都重复创建一个功能相同的新对象,下面举几个例子说明这个点。重用不可变对象如果对象是不可变的,那么它就始终可以被重用。对于同时提供了静态工厂方法和构造方法的不可变类,通常使用静态工厂方法而不是构造方法,以避免创建不必要的对象,尽管同时提供两种方法的场景不太多。例如静态工厂方法Boolean.valueOf(String)几乎总是优于构造方法Boole原创 2017-03-20 23:03:02 · 755 阅读 · 0 评论 -
高效Java06:消除过期的对象引用
类自己管理内存一般而言,只要是类自己管理内存,我们就应该警惕内存泄漏问题。比如下面的例子:public class Stack { private Object[] elements; private int size; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack(){原创 2017-03-20 23:03:51 · 646 阅读 · 0 评论 -
高效Java07:避免使用终结方法(finalizer)
为什么要避免使用终结方法终结方法(finalizer)通常是不可预测的,也是很危险的,一般是不必要的。不能保证会被及时的执行不保证他们会被执行使用终结方法会有严重的性能损失不能保证会被及时的执行一个对象变为不可达状态后,在JVM下一次执行垃圾回收时才会调用终结方法,中间这段时间间隔是不固定的,所以只要终结方法中做的处理注重时间,则它一定不会达到我们期望的理想状态。所以,不应该依赖终结方法来做原创 2017-03-20 23:04:46 · 668 阅读 · 0 评论 -
高效Java08:覆盖equals时遵守通用约定
覆盖equals的要求自反性(reflexivity):一个对象必须等于其自身对称性(symmetry):任何两个对象,无论使用哪一个对象的equals()方法判断其与另一个对象是否相等的结果应当是一致的传递性(transitivity):如果一个对象等于第二个对象,且第二个对象等于第三个对象,则第一个对象一定等于第三个对象。一致性(consistency):如果两个对象相等,若没有一个对象原创 2017-03-20 23:05:28 · 238 阅读 · 0 评论