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();
解决方案是使用参数化类型或通配符类型。