Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementations and Collections

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

like image 536
Chet Avatar asked Feb 07 '26 15:02

Chet


1 Answers

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.

like image 116
zw324 Avatar answered Feb 09 '26 09:02

zw324