// channels is a HashMap<String,Channel>
for (Channel channel : channels.entrySet().toArray(new Channel[channels.entrySet().size()])) {
// stuff
}
抛出ArrayStoreException。为什么呢?
答案 0 :(得分:3)
entrySet()
会返回Set<Map.Entry<K,V>>
,因此您无法从中生成Channel
数组。
您不需要创建数组来迭代Channel
值。只需使用values()
:
for (Channel channel : channels.values()) {
// stuff
}
答案 1 :(得分:1)
您是否查看了ArrayStoreException的文档?它说“抛出表示已经尝试将错误类型的对象存储到一个对象数组中。”因此显而易见(可能是:-)猜测是toArray()
试图将某些内容存储到您的{ {1}}数组不是Channel
。这是有道理的,因为条目集不是Channel
个对象,而是Channel
。那些不一样。