gpt4 book ai didi

java - 在 Map 中转换值

转载 作者:行者123 更新时间:2023-11-30 08:18:12 26 4
gpt4 key购买 nike

我正在使用内存缓存 (Google App Engine) 并使用 getAll() 批量检索多个缓存条目。我的缓存条目是:

private Map<String, Set<Long>> cacheEntries; // key: String, value: Set<Long>

getAll() 返回 Object 作为值(因为它不知道我之前缓存了一个 Set),这是签名:

<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

这显然失败了,因为返回了 Object 并且需要 Set。所以我试着像这样转换 map :

cacheEntries = (Map<String, Set<Long>>) cache.getAll(keys);

但是编译器告诉我

Incompatible types, cannot cast Map<String, Object> to Map<String, Set<Long>

原因很清楚:我试图转换整个 map ,而我确实需要转换每个 map 条目中的值。

当然,我可以通过遍历 Map 并分别转换每个值来解决这个问题,但我想知道是否有更好的方法来实现这一点。

最佳答案

您可以将其转换为原始 Map在转换到 Map<String, Set<Long>> 之前:

cacheEntries = (Map<String, Set<Long>>)(Map)cache.getAll(keys);

你也可以使用 Map<String, ?>如果您不想要原始类型警告。

关于java - 在 Map 中转换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27669708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com