Why does this not work...
public ArrayList getEdges() { return A; //A is an Arraylist of type \'Action\'. Action implements Ed
Because while Edge is a subtype of Action, ArrayList is not a subtype of ArrayList.
Edge
Action
ArrayList
Use ArrayList extends Edge> instead.
ArrayList extends Edge>
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.