使用Guava CacheBulilder()构建扩展的AbstractCache()对象

时间:2018-10-26 04:48:06

标签: inheritance guava

我想扩展Guava的AbstractCache()类(Cache接口的实现),以覆盖Cache接口的某些内置功能。<​​/ p>

但是,由于CacheBuilder()通常用于构建缓存并返回Cache类型的对象,因此我不确定如何构建扩展类类型的缓存,因为使用CacheBuilder会返回类型父类的因此将是垂头丧气。

import com.google.common.cache.{Cache, AbstractCache, CacheBuilder}

// this works normally
Cache validCache = CacheBuilder.newBuilder.build()

// extending AbstractCache, an abstract class implementation of Cache interface
class MyCache extends AbstractCache {...}

// this doesn't work since the return value of calling build()
// is Cache, parent type of MyCache
MyCache invalidCache = CacheBuilder.newBuilder.build()

我认为我丢失了一些东西,因为AbstractCache()类的文档特别指出,它是Cache接口的一种实现,它使程序员可以更轻松地扩展自己的类,大概是从该类构建缓存

1 个答案:

答案 0 :(得分:0)

只需不使用CacheBuilder,而是直接自己实例化MyCacheCacheBuilder只是Cache实例的构造函数(假定您自己实现所有奇特的东西)。

请注意,为什么要扩展AbstractCache?也许Caffeine就足够了?