Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Why does this not work...

public ArrayList<Edge> getEdges() {

return A;

//A is an Arraylist of type 'Action'. Action implements Edge.

}

the interface Edge includes: public ArrayList getEdges();

even though this does.

public Edge getEdges() {

return B;

//B is an 'Action'. Action implements Edge.

}

the interface Edge includes: public Edge getEdges();

Thank You, Chet

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
392 views
Welcome To Ask or Share your Answers For Others

1 Answer

Because while Edge is a subtype of Action, ArrayList<Action> is not a subtype of ArrayList<Edge>.

Use ArrayList<? extends Edge> instead.

You could take a look at this tutorial's 4. Wildcard section, although I'd suggest to just read through it, because it is really helpful.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...