输入:
public static void main(String[] args) {
final String key = "some key";
final String value = "some value";
Map<String, String> map1 = new HashMap<String, String>(){{put(key, value);}};
System.out.println(new Gson().toJson(map1) + " " + map1.get(key));
Map<String, String> map2 = new HashMap<>();
map2.put(key, value);
System.out.println(new Gson().toJson(map2) + " " + map2.get(key));
}
输出:
null some value
{"some key":"some value"} some value
Process finished with exit code 0
答案 0 :(得分:21)
对于map1
,您创建了一个匿名子类。假设包含main()
的类称为ExampleClass
,则:
System.out.println(map1.getClass().getName())
打印出:
ExampleClass$1
将类打印为map2
会产生以下结果:
java.util.HashMap
关于Gson不对其进行序列化的确切原因-Gson使用类名来查找转换器。如果您改为使用以下方式对其进行序列化:
System.out.println(new Gson().toJson(map1, HashMap.class));
...它按预期工作。