2
我正在使用memcache(Google App Engine)并使用getAll()在批处理中检索多个缓存条目。我的缓存条目是:在地图中投射值
private Map<String, Set<Long>> cacheEntries; // key: String, value: Set<Long>
GETALL()返回对象的值(因为它不知道我已经缓存在组以前),这里是签名:
<T> java.util.Map<T,java.lang.Object> getAll(java.util.Collection<T> collection);
在我的代码去:
cacheEntries = cache.getAll(keys); // cache is the MemcacheService, keys is a Collection of String
这明显失败,因为返回和预期的集合。于是,我就投的地图是这样的:
cacheEntries = (Map<String, Set<Long>>) cache.getAll(keys);
但是编译器告诉我
Incompatible types, cannot cast Map<String, Object> to Map<String, Set<Long>
很清楚为什么:我想投全地图,而我真的需要转换价值在每个地图条目中。
当然,我可以解决这个迭代遍历地图和单独铸造每个值,但我想知道是否有更好的方法来实现这一点。