inheritance - 使用 Guava CacheBulilder() 构建扩展的 AbstractCache() 对象
问题描述
我想扩展 Guava 的AbstractCache()类(Cache 接口的一个实现)来覆盖 Cache 接口的一些内置函数。
但是,由于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 接口的实现,使程序员更容易扩展他们自己的类,大概是从它构建一个缓存。
解决方案
只是不要使用CacheBuilder
,而是自己MyCache
直接实例化你。CacheBuilder
只是Cache
实例的构造函数(假设您自己实现任何花哨的东西)。
作为旁注,您为什么要扩展AbstractCache
?也许咖啡因就足够了?
推荐阅读
- python - 在 Altair 中使用共享选择器/过滤器在不同图表中绘制两个数据框
- javascript - 有没有办法使用javascript动态添加或删除对象
- rest - PayPal REST API /v1/reporting/balances balance_detail 返回错误的负余额
- kubernetes - 删除 kubectl apply -f 中不存在的注解
- c++ - 包含带有声明的标头时出现许多 OpenSSL 'C3861: .. identifier not found'
- struct - 如何向 Julia 的新员工发送一个结构?
- java - 使用 java Maven Apache Netbeans 构建可执行 Jar
- sql-server - n 如何在 MSSQL 中使用 GROUP_CONCAT() 并根据整行对数据进行排序?
- java - 从 Java 调用 Kotlin 高阶函数?
- android - android studio:ImageView 碰撞检查总是返回一个真实值,在我正在制作的其他应用服务应用程序之上