【发布时间】:2022-01-13 16:47:03
【问题描述】:
我正在尝试将 Google Guava CacheLoader 用于自定义类作为 Key。
@Value.Immutable
public interface RecordAggregatorRequest {
String name();
String date();
}
private final LoadingCache<RecordAggregatorRequest, Map<String, Record>> recordsCache = CacheBuilder.newBuilder()
.expireAfterWrite(Duration.ofMinutes(30))
.build(CacheLoader.from(recordAggregator::getRecords));
然后像这样调用:
final Map<String, Record> recordsMap = recordsCache.get(aggregatorRequest);
recordAggregator::getRecords 每次都被调用。我怀疑这是因为 RecordAggregatorRequest 键的哈希码每次都不同,即使成员值相同。有没有办法让它作为 Key 用于自定义类?
【问题讨论】:
-
您是否尝试过修复您的哈希码逻辑,使其不会“每次都不同”?
-
目前,我还没有编写任何计算哈希的逻辑。有点依赖谷歌番石榴为我做这件事(这是行不通的)