// channels is a HashMap<String,Channel>
for (Channel channel : channels.entrySet().toArray(new Channel[channels.entrySet().size()])) {
// stuff
}抛出ArrayStoreException。为什么?
发布于 2016-08-22 15:33:35
entrySet()返回一个Set<Map.Entry<K,V>>,因此您不能从它生成Channel数组。
实际上,您不需要创建一个数组来迭代Channel值。只需使用values():
for (Channel channel : channels.values()) {
// stuff
}发布于 2016-08-22 16:06:57
你检查过ArrayStoreException的文档了吗?它显示“抛出以指示已尝试将错误类型的对象存储到对象数组中。”因此,最明显的(可能是:-)猜测是toArray()试图在Channel数组中存储一些不是Channel的内容。这是有意义的,因为条目集不是由Channel对象组成,而是由Map.Entry<String,Channel>组成。这些是不一样的。
https://stackoverflow.com/questions/39073653
复制相似问题