// 这里传参传入的是cacheNullObject数组
public CacheObject get(String region, String key, boolean...cacheNullObject) {
this.assertNotClose();
CacheObject obj = new CacheObject(region, key, CacheObject.LEVEL_1);
obj.setValue(holder.getLevel1Cache(region).get(key));
if(obj.rawValue() != null)
return obj;
String lock_key = key + '%' + region;
synchronized (_g_keyLocks.computeIfAbsent(lock_key, v -> new Object())) {
obj.setValue(holder.getLevel1Cache(region).get(key));
if(obj.rawValue() != null)
return obj;
try {
obj.setLevel(CacheObject.LEVEL_2);
obj.setValue(holder.getLevel2Cache(region).get(key));
if (obj.rawValue() != null) {
holder.getLevel1Cache(region).put(key, obj.rawValue());
}else {
// 这里通过判断缓存空对象为什么要判数组
boolean cacheNull = (cacheNullObject.length > 0) ? cacheNullObject[0] : defaultCacheNullObject;
if (cacheNull)
set(region, key, newNullObject(), true);
}
} finally {
_g_keyLocks.remove(lock_key);
}
}
return obj;
}
为什么要传入可变参数呢,有什么特别的用意吗