[英]Java cast of ArrayList<Map>
不好意思地說,我對Java不太熟悉。 我正在使用eclipse作為IDE。 Eclispe抱怨我無法理解的未經檢查的演員表。 請參考代碼片段。 一般而言,如何制定這項權利?
public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
// check input file path
for( Object map : libertySourceFiles) {
Map<String,String> mp = (Map<String,String>) map ; // <==Eclipse complains here: Unchecked cast from Object to Map<String,String>
歡迎任何提示
羅爾夫
您可以更改for循環並在集合中使用顯式類型:
for(Map<String,String> map : libertySourceFiles) {
Map<String,String> mp = map; //probably not needed any more
}
這意味着您正在執行一種編譯器無法檢查的強制轉換。
它警告您必須檢查它的安全性。
更好的解決方案是使用
for(Map<String, String> mp : libertySourceFiles) {
Eclipse抱怨,因為您想要將一個Object
轉換為Map<String, String>
。 將運行變量map
的類型更改為Map<String, String>
,一切都會好起來。 這樣,您甚至不需要變量mp
。
這里的問題是,您向上轉換ArrayList<Map<String,String>>
元素做Object
,然后向下轉換為通用類型。 解決方案很簡單:
public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
// check input file path
for( Map<String,String> mp : libertySourceFiles) {
// Map<String,String> mp = (Map<String,String>) map ; Not needed anymore
....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.