// channels is a HashMap<String,Channel>
for (Channel channel : channels.entrySet().toArray(new Channel[channels.entrySet().size()])) {
// stuff
}
抛出ArrayStoreException。为什么?HashMap#entrySet抛出ArrayStoreException
// channels is a HashMap<String,Channel>
for (Channel channel : channels.entrySet().toArray(new Channel[channels.entrySet().size()])) {
// stuff
}
抛出ArrayStoreException。为什么?HashMap#entrySet抛出ArrayStoreException
entrySet()
返回一个Set<Map.Entry<K,V>>
,所以你不能从它产生一个Channel
数组。
您并不需要创建一个数组以迭代Channel
值。只需使用values()
:
for (Channel channel : channels.values()) {
// stuff
}
您是否检查了ArrayStoreException的文档?它说:“抛出以表明已尝试将错误类型的对象存储到对象数组中。”因此,显而易见的(可能是:-)猜测是toArray()
正试图将某些东西存储到您的Channel
数组中一个Channel
。这是有道理的,因为入口集包含,而不是Channel
对象,但是Map.Entry<String,Channel>
。那些不一样。
那么我会如何转换? – Priv
@Priv渠道是地图的关键? – Eran
不知道,谢谢。 – Priv