2014-02-19 61 views
0

我知道我可以選擇製作一個POJO對象來存儲它。但是,我試圖在嵌套的HashMap中執行此操作。每當我做下面的事情時,我都會得到類型安全警告。嵌套字符串哈希映射

Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>(); 
map.put("fund_cde", new HashMap(){{put("ABC", "ABC is not valid message.");}}); 

如果我設置嵌套包含HashMap類型,像這樣:

map.put("fund_cde", new HashMap<String, String>(){{put("ABC", "ABC is not valid message");}}); 

我結束了這樣的警告,而不是:

可序列化類未聲明long類型的靜態最後的serialVersionUID領域

任何建議正確的方式來做到這一點? 我看了一下How to put/get values into/from Nested HashMap,但我還是不理解它。

謝謝!

+1

只是你的參數'HashMap'在你的第一個例子。並在多行上添加元素。這些匿名類很混亂,不易讀。 –

+1

第二個是正確的。可序列化是一個單獨的問題。 – keshlam

+1

^^您發佈的代碼片段(第二個版本)沒有任何問題。您現在收到的錯誤來自您未向我們展示的代碼(編寫一段簡單的對您所顯示的代碼的兩行測試會告訴您這一點)。 –

回答

-1

如果你真的想要消除警告。或者包含以下版本ID:

map.put("fund_cde", new HashMap(){ 
     private static final long serialVersionUID = 1L; 
     {put("ABC", "ABC is not valid message.");} 
}); 

或向方法添加@SuppressWarnings(「serial」)註釋。如果您使用像eclipse這樣的IDE,它可以爲您提供這些選項作爲自動修復。

+0

恩,這不是問題。 'Hashmap'已經實現了'Serializable'並且有'serialVersionUID' - http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/HashMap.java #1023 –

+0

是HashMap,但匿名類沒有。你可以通過試圖得到以下證實: 新的HashMap (){{System.out.println(serialVersionUID);}} 來編譯。 – user1945457

+0

與之相反:新的HashMap (){private static final long serialVersionUID = 1L; {System.out.println(serialVersionUID);}}編譯就好了。 – user1945457

0

還有另一種方式來實現這一點,如果你喜歡,你可以使用,因爲我也以不同的方式嘗試,也給warning.You可以使用此

Map<String,String> map1=new HashMap<String,String>(); 
    map1.put("ABC", "XYZ"); 
    Map<String ,Object> map=new HashMap<String,Object>(); 
    map.put("axz", map1); 
+0

@Bitzal我希望它能幫助你.plz如果你覺得它有用 – Sheel