我想扩展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接口的一种实现,它使程序员可以更轻松地扩展自己的类,大概是从该类构建缓存
答案 0 :(得分:0)
只需不使用CacheBuilder
,而是直接自己实例化MyCache
。 CacheBuilder
只是Cache
实例的构造函数(假定您自己实现所有奇特的东西)。
请注意,为什么要扩展AbstractCache
?也许Caffeine就足够了?