2014-01-07 2 views
0

В CacheBuilder методы weakValues() и softValues() оба содержат эту линию в своих Javadocs:гуавы Кэш - что импликации сравнения значений с помощью идентичности

Примечание: при использовании этого метода, полученный кэш будет использовать идентификатор (==) для определения равенства значений.

Как именно это влияет на поведение? Насколько я могу судить, нет никаких общедоступных методов на интерфейсе Cache или LoadingCache, который потребует тестирования для равенства значений. Это влияет на вид asMap()?

+0

Я предполагаю, что это касается в основном вида карты и, возможно, будущих расширений. –

ответ

0

Я предполагаю, что он использует внутреннее устройство ConcurrentMap Google и использует сравнение значений для remove и replace.

0

Guava внутренне кэширует эти мягкие/слабые значения. Если значение 2 слабых/мягких значений равно, то контент должен быть равен.

гуавы сравнивает только те значения, в методах, как содержит (...), удалить (...) или заменить (...) и используется, чтобы найти вход и, специфические проверки если он действительно существует или удалить ключ. Поэтому guava сначала ищет конкретную запись. Если найден, удаляется запись.

Я думаю, что главная цель состоит в том, чтобы обнаружить в excplicit удаление записи, потому что, если значение, которое ссылка указывает на уже нулевой, то это не было явное удаление, но это было удален guava внутренне (расчет).

Не о чем беспокоиться. Это просто способ, которым guava обрабатывает удаление старых записей.

Там нет никакого способа изменить это, и вы действительно не должны заботиться об этом, гуава будет справиться с этим: D

Смежные вопросы