private volatile FieldType field;
FieldType getField() {
FieldType result = field;
if (result == null) {
synchronized(this) {
result = field;
if (result == null)
field = result = computeFieldValue();
}
}
return result;
}
我们几乎都知道这是double check idiom for lazy initialization of instance field
. 但是我在这里有一个愚蠢的疑问,有人将如何创建 FieldType 的单例对象。至于调用函数getField()
(创建单例实例),您需要一个类的实例,但到目前为止您还没有该实例。我有点困惑,请告诉我。谢谢!!!