2014-03-30 18 views
1

我有以下的(部分)类:Java的警告:[选中]选中转换

public class Graph<O> { 
    private ArrayList<Edge> edges; 

    public ArrayList<Edge> getEdges() { 
     return edges; 
    } 
} 

现在,调用方法getEdges()当别的地方,存储ArrayList<Edge>类型的变量的结果,我得到warning: [unchecked] unchecked conversion

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

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

回答

5

当您在原始类型Graph上调用getEdges()方法时,会发出此警告。在这种情况下,所有的通用类型都会被其擦除所替代。因此,对于Graph原始类型,方法签名变得像:

public ArrayList getEdges(); 

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

+0

谢谢。我把另一个文件(类)中'graph'的定义从'Graph'改为'Graph ',现在它确实编译没有错误:) – Jonathan