Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing ArrayList<Subclass> to method declared with List<Superclass>

Tags:

I have a method with a parameter containing generics.

public static void readList(List<ModelObject> list)
{
    // more code
}

I want to pass an ArrayList of ModelObjectImplementations to this method.

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

ModelObject is an interface that ModelObjectImplementation implements. How can I change the method declaration to allow this?

like image 926
CodeBlue Avatar asked May 17 '12 21:05

CodeBlue


1 Answers

You can use wildcards, if you're using Java version 1.5 and higher.

public static void readList(List<? extends ModelObject> list)

This solution is more generic, because it fits for all java.util.List interface implementations and subclasses/subinterfaces of ModelObject. For more details go to wildcards tutorial

like image 93
bontade Avatar answered Oct 27 '22 01:10

bontade