簡體   English   中英

Java對ArrayList的轉換<Map>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM