Создать Google Guava Cache, используя сложный ключ - PullRequest
5 голосов
/ 01 ноября 2011

Я пытаюсь создать кэш с ключом "Pair", с этим классом Pair, взятым из этой записи.

Я пытаюсь:

CacheLoader<Pair<String, String>, String> loader =
    new CacheLoader<Pair<String, String>, String>() {
       public String load(Pair<String, String> key) {
           return GetRatingIdentityByShortNameLoader(key.first, key.second);
       }
    };

_ratingIdCache = CacheBuilder.newBuilder()
    .concurrencyLevel(a_conclevel.intValue())
    .maximumSize(a_maxsize.intValue())
    .expireAfterAccess(a_maxage.intValue(), TimeUnit.MINUTES)
    .build(loader);

Что не удается скомпилировать в Eclipse (helios, java 1.6) с помощью:

Метод build (CacheLoader) в типе CacheBuilder не применим для аргументов (новый CacheLoader, String> () {})

У кого-нибудь есть предложения по решению этой проблемы?Цель в том, что мне нужен кеш, в котором хранится «идентификатор», для которого «первичным ключом» является «Рейтинговое агентство» + «Рейтинг».

Гуава 10.0.1

1 Ответ

5 голосов
/ 02 ноября 2011

У меня этот кэш изначально был определен как Cache, и когда я изменил CacheBuilder.build () на использование сложного ключа, я забыл обновить объявление кеша.

Итак, простое изменение:1003 *

Cache<String, String> _ratingAgencyId;

до

Cache<Pair<String, String>, String> _ratingAgencyId;

сделали свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...