Java 为什么是番石榴';s Cache.invalidate(对象键)方法不是泛型的?

Java 为什么是番石榴';s Cache.invalidate(对象键)方法不是泛型的?,java,caching,guava,Java,Caching,Guava,发件人: 是否有技术原因、历史原因或其他原因?原因与Map.remove采用对象参数相同,并对其进行了解释和说明 这个原因既不是技术原因,也不是历史原因:它只是……一个客观合理的原因。但是为什么缓存没有get(对象键)方法呢?:)因为Cache.get和LoadingCache.getUnchecked都会导致条目被添加到缓存中,所以它必须是K类型,原因与Map.put必须使用K类型的键相同。诚然,getIfPresent不接受对象——它强制其参数的类型为K——这可能是一个判断调用。(但是asM

发件人:


是否有技术原因、历史原因或其他原因?

原因与
Map.remove
采用对象参数相同,并对其进行了解释和说明


这个原因既不是技术原因,也不是历史原因:它只是……一个客观合理的原因。

但是为什么缓存没有
get(对象键)
方法呢?:)因为
Cache.get
LoadingCache.getUnchecked
都会导致条目被添加到缓存中,所以它必须是
K
类型,原因与
Map.put
必须使用
K
类型的键相同。诚然,
getIfPresent
不接受
对象
——它强制其参数的类型为
K
——这可能是一个判断调用。(但是
asMap().get
仍然接受一个
对象
,并且它在功能上等同于
getIfPresent
)是的,它们在某些地方符合
Map
接口,但在其他地方却不符合。我对
getIfPresent
的理由不太肯定,但我确实知道,这些API已经讨论和辩论了好几天了。
public interface Cache<K,V> extends Function<K,V> {
    //...
    void invalidate(Object key);
    //...
}
    void invalidate(K key);