Cache2k看起来像一个非常有前途的缓存实现。不幸的是,文档非常有限,这就是为什么我需要一些帮助解决以下问题。我正在使用最新版本0.26-BETA。Cache2k:java.lang.UnsupportedOperationException:loader未设置
根据文档的高速缓存应该是这样创建的:
Cache<String,String> c =
CacheBuilder.newCache(String.class, String.class).build();
String val = c.peek("something");
assertNull(val);
c.put("something", "hello");
val = c.get("something");
assertNotNull(val);
c.destroy();
不幸的是,至少这些方法中的2已被弃用,包括CacheBuilder类本身。因此,我试图创建缓存是这样的:
org.cache2k.Cache<String, Object> newCache = Cache2kBuilder.of(String.class, Object.class)
.name(cacheKey.toString())
.entryCapacity(100000)
.eternal(true)
.build();
然而,这将引发“java.lang.UnsupportedOperationException:装载机未设置”例外。
因此,问题是:我应该如何构建缓存,以便不发生此异常?
编辑:
这给了我同样的异常:
org.cache2k.Cache<Object, Object> newCache =
CacheBuilder.newCache(Object.class, Object.class)
.eternal(true)
.build();
编辑#2:
只是多了一个注:当我复制&代码从wiki页面我得到粘贴一个错误 - 如下图所示。
用什么JDK版本,你的测试?我会尝试删除现在导致问题的<>。
非常感谢!
迈克尔
我刚刚添加了另一个编辑(编辑#2),以便我可以上传图像。 – michaeldd
再次删除编辑3,因为我还没有看到编辑2的答案。对#2的回复似乎是一种改进。好的,我现在明白了,但重新阅读完整答案之后出现了什么问题。我现在将使用peek方法,因为无论如何都要封装缓存实现 - 所以我可以将get方法指向您的peek方法。 – michaeldd
太好了。我想到,如果你想构建一个无类型的缓存,你实际上应该使用'Cache2kBuilder.forUnkownTypes()'。我可能会在'new Cache2kBuilder