2012-02-27 2 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.removeherehere으로 설명되는 Object 인수를 취하는 것과 같은 이유 때문입니다.

이 이유는 기술적이거나 역사적인 것이 아닙니다. 객관적으로 합리적인 이유 일뿐입니다.

+0

그러나 캐시에'get (Object key) '메소드가없는 이유는 무엇입니까? :) –

+5

'Cache.get'과'LoadingCache.getUnchecked'는 각각 캐시에 항목을 _added_ 할 수 있기 때문에'Map.put'이 a를 취해야하는 것과 같은 이유로'K' 형이어야합니다 K 타입의 키. 틀림없이,'getIfPresent'는'Object'를 취하지 않습니다 - 그것의 인수가'K' 타입이되도록 강요합니다 - 아마도 그것은 판단의 호출이었을 것입니다. (그러나'asMap(). get'은 여전히'Object'를 취하고'getIfPresent'와 기능적으로 같습니다.) –

+0

그렇다면 일부 맵에서는'Map' 인터페이스를 따르는 것이 이상하게 보입니다. –

관련 문제