// 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