java - 从 Callable 创建一个 HashMap 键
问题描述
假设我有一个可调用对象,我想将它用作缓存中的键和数据检索器。
Callable<SomeObject> callable = () => {
return dataSource.getSomethingBig();
}
SomeObject result = storage.getFromCacheOrSource(callable);
相同的可调用对象可能在别处构造并通过缓存调用。因此,我想使用可调用对象作为缓存中的键从那里获取它,或者如果缓存中还没有数据(通过可调用对象获得)填充缓存。
public <T> T getFromCacheOrSource(Callable<T> callable) {
String key = getKeyFromCallable(callable);
if (cache.contains(key)) {
return cache.get(key);
}
T data = callable.call();
cache.put(key, data);
return data;
}
如果可调用对象的内容相同,如何从可调用对象构造一个始终相同的键?
getKeyFromCallable(Callable<T> callable) {
// What to do here to always return the same key for identical callables?
}
解决方案
推荐阅读
- macros - 为什么我将此函数转换为 Racket 宏会产生无限递归?
- android - 颤振铃声未注册
- sql-server - Always Encrypted/SS 2017 和 ASP Classic,除了读取操作之外的任何问题
- arrays - 使用 jq 在数组顶部添加/添加元素
- namespaces - 函数体内部的 using 指令和外部的其他指令有什么区别?
- python - Python SQLite 等效于 .tables(没有 Pandas 的单行)
- javascript - 如何将 heroku 连接到已经存在的 mySQL 数据库
- html - 使用 mpld3 输出居中的 HTML 图像
- excel - VBA 用户窗体两次发布数据....有时
- python - 如何循环处理多个文件?