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>
很清楚爲什麼:我想投全地圖,而我真的需要轉換價值在每個地圖條目中。
當然,我可以解決這個迭代遍歷地圖和單獨鑄造每個值,但我想知道是否有更好的方法來實現這一點。