I have the following (partial) class:

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

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

Now, when calling the method getEdges() somewhere else and storing the result in a variable of type ArrayList<Edge>, I get warning: [unchecked] unchecked conversion:

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

I have looked at multiple other questions about this warning, but I can't figure out what I'm doing wrong. getEdges() returns ArrayList<Edge>, so why can't I store its result in a variable of that exact type?

有帮助吗?

解决方案

That warning would come when you invoke the getEdges() method on raw type Graph. When that is the case, all the generic types are replaced with their erasure. So, for Graph raw type, the method signature becomes like:

public ArrayList getEdges();

Solution is to use parameterized type or wildcard types.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top