在绝大多数的系统中,我们都会使用正常的初始化。正常的初始化代码是这样的:
private final MyClass field = new MyCLass();
但在有些程序中,我们不希望某些变量在正常的类加载过程中就被初始化。换言之,我们希望某些变量能够延迟初始化。在阅读下面的内容之前,笔者希望你能读一下我的另外一篇文章, 单例模式的5种JAVA实现。你要问我为什么?答案只有四个字,“见多识广”!本文要介绍的内容大多采用这篇博客的技术方法。
说正题,如何实现延迟初始化呢?最开始想到的可能是酱紫:
private MyClass field;//正确的代码
public MyClass getField(){
synchronized (this){
if(field==null){
field=new MyClass();
}
}
return field;
}
你肯定会问,怎么变这么复杂啦?下面这样岂不是更好?
private MyClass field;//错误的代码
public MyClass getField() {
if (field == null) {