Java 嵌套字符串哈希映射

Java 嵌套字符串哈希映射,java,map,hashmap,Java,Map,Hashmap,我知道我可以选择制作一个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."

我知道我可以选择制作一个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.");}});
Map Map=newhashmap();
put(“fund_cde”,new HashMap(){{put(“ABC”,“ABC不是有效消息”);});
如果我这样设置嵌套HashMaps类型:

map.put("fund_cde", new HashMap<String, String>(){{put("ABC", "ABC is not valid message");}});
map.put(“fund_cde”,new HashMap(){{put(“ABC”,“ABC不是有效消息”);});
我最后得到的警告是:

serializable类不声明long类型的静态最终SerialVersionId字段

关于正确的方法有什么建议吗? 我看了一眼,但还是不明白


谢谢

如果你真的想取消这个警告。包括一个版本id,如:

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

或者将@SuppressWarnings(“序列”)注释添加到方法中。如果您使用像eclipse这样的IDE,它可以为您提供这些选项作为自动修复。

如果您愿意,还有另一种方法可以实现这一点,您可以使用,因为我也以不同的方式尝试过,这也会给出警告。您可以使用此方法

Map<String,String> map1=new HashMap<String,String>();
    map1.put("ABC", "XYZ");
    Map<String ,Object> map=new HashMap<String,Object>();
    map.put("axz", map1);
Map map1=newhashmap();
地图1.放置(“ABC”、“XYZ”);
Map Map=newhashmap();
地图放置(“axz”,地图1);

在第一个示例中,只需参数化
HashMap
。并在多行上添加元素。这些匿名类杂乱无章,不容易阅读。第二个是正确的。可序列化性是另一个问题。^^您发布的代码段(第二个版本)没有问题。您现在收到的错误来自您没有向我们显示的代码(对您显示的代码编写一个简单的两行测试会告诉您这一点)。谢谢-当然我不会为每个代码添加序列ID。(但对可序列化性的了解还不够。)我将再次研究它。至少我的hashmap是正确的。只需在检索时根据需要制作所有映射和强制转换。嗯,这不是问题所在
Hashmap
已经实现了
Serializable
,并且有一个
serialVersionUID
-是的,Hashmap有,但匿名类没有。您可以通过尝试获取:new HashMap(){{System.out.println(serialVersionUID);}}}进行编译来确认这一点。相反,new HashMap(){private static final long serialVersionUID=1L;{System.out.println(serialVersionUID);}}编译得很好。此外,Bitzal在问题中指出警告是无效的“serializable类没有声明long类型的静态最终serialVersionUID字段”@Bitzal我希望它能帮助您。请告诉我您是否觉得它有用