Java警告:未经检查的转换

我有以下(部分)课程:

public class Graph { private ArrayList edges; public ArrayList getEdges() { return edges; } } 

现在,当在其他地方调用方法getEdges()并将结果存储在ArrayList类型的变量中时,我收到warning: [unchecked] unchecked conversion

 OtherFile.java:101: warning: [unchecked] unchecked conversion ArrayList edges = graph.getEdges(); ^ required: ArrayList found: ArrayList 

我已经看过关于这个警告的其他多个问题,但我无法弄清楚我做错了什么。 getEdges()返回ArrayList ,为什么我不能将其结果存储在那个确切类型的变量中?

当您在原始类型Graph上调用getEdges()方法时,会发出该警告。 在这种情况下,所有generics类型都将替换为它们的擦除。 因此,对于Graph原始类型,方法签名变为如下:

 public ArrayList getEdges(); 

解决方案是使用参数化类型或通配符类型。