类LocalLoadingCache

类LocalLoadingCache是类LocalCache的内部类。

类定义

class LocalCache {
    static class LocalLoadingCache<K, V> extends LocalManualCache<K, V> implements LoadingCache<K, V> {
    }
}

注: LocalLoadingCachejicheng继承LocalManualCache,实现LoadingCache,又没有用到AbstractLoadingCache继承,还是那个问题: 那AbstractLoadingCache写来给谁用呢?

构造函数和属性

LocalLoadingCache(CacheBuilder<? super K, ? super V> builder,
    CacheLoader<? super K, V> loader) {
  super(new LocalCache<K, V>(builder, checkNotNull(loader)));
}

简单委托给localcache的方法

以下方法都是将实现简单委托给localcache的同名方法:

  • refresh()
  • getAll()

代码典型如下:

@Override
public void refresh(K key) {
  localCache.refresh(key);
}

稍作变化再委托给localcache的方法

以下方法是稍作变化再委托给localcache的方法,有些只是方法名不同而已:

  • get()

具体如下:

@Override
public V get(K key) throws ExecutionException {
  return localCache.getOrLoad(key);
}

@Override
public final V apply(K key) {
  return getUnchecked(key);
}

getUnchecked()方法

@Override
public V getUnchecked(K key) {
  try {
      // 调用get()方法
    return get(key);
  } catch (ExecutionException e) {
      // 如果抛出受查异常,就包装为 UncheckedExecutionException 再抛出去
    throw new UncheckedExecutionException(e.getCause());
  }
}

// UncheckedExecutionException是一个RuntimeException
public class UncheckedExecutionException extends RuntimeException {}

writeReplace()方法

@Override
Object writeReplace() {
  return new LoadingSerializationProxy<K, V>(localCache);
}

results matching ""

    No results matching ""