2012-02-27 3 views
12

guavaのCache.invalidate(Object key)メソッドが一般的でないのはなぜですか? <a href="http://docs.guava-libraries.googlecode.com/git-history/v11.0.1/javadoc/index.html" rel="noreferrer">the javadocs</a>から

void invalidate(K key); 

技術的な理由、歴史的な理由、または他のいくつかの理由がある:

public interface Cache<K,V> extends Function<K,V> { 
    //... 
    void invalidate(Object key); 
    //... 
} 

なぜこれが一般的な方法としてレンダリングされていませんか?

答えて

13

Map.removeはObject引数をとります。これはherehereと説明されています。

この理由は、技術的でも歴史的でもなく、客観的に分かりやすい理由です。

+0

しかし、キャッシュに 'get(Object key)'メソッドがないのはなぜですか? :) –

+5

'Cache.get'と' LoadingCache.getUnchecked'はそれぞれエントリをキャッシュに追加することができるので、 'Map.put'がaを取るのと同じ理由で' K'型でなければなりませんキー「K」を押す。確かに、 'getIfPresent'は' Object'を取りません - それは 'K'型の引数を強制します - それはおそらく判断の呼び出しでした。 (しかし、 'asMap()。get'はまだ' Object'をとります、それは 'getIfPresent'と機能的に等価です。) –

+0

そうですが、いくつかの場所で' Map'インターフェースに準拠しているのは奇妙です。 –

関連する問題