Я бы хотел расширить класс AbstractCache () в Guava (реализация интерфейса 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, облегчающая программистамрасширить свой собственный класс, предположительно, чтобы построить кеш из него.