new ArrayList() 作为 map.put() 的参数是不安全的操作?

new ArrayList() as an argument to a map.put() is an unsafe operation?

以下代码:

for (String day:daysOfWeek) {classesData.put(day, new ArrayList());}

给我以下错误:

Note: ./com/myname/MyClass/MyClass1.java uses unchecked or unsafe operations.                                                                
Note: Recompile with -Xlint:unchecked for details. 

我不得不手动注释了很多行,才发现上面的代码是有错误的。我怀疑这是因为 classesData.put(day, new ArrayList());,更具体地说,是 new ArrayList()。我开始 new ArrayList() 是因为我想在未来添加内容,现在就添加。我这样添加:

classesData.get(trueDayName).add(hourData);

(hourData 是一个地图)

因为classesData是以下数据结构:

Map<String, List<Map<String, String>>> classesData = new HashMap<String, List<Map<String, String>> >();
Java 中的

ArrayList 是泛型类型,您完全省略了泛型并将其用作 raw type。我不确定,但这可能是您遇到问题的原因。

尝试:classesData.put(day, new ArrayList<Map<String, String>>());