Передача ArrayList <Subclass> в метод, объявленный с List <Superclass>

У меня есть метод с параметром, содержащим обобщения.

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

Я хочу передатьArrayList изModelObjectImplementationс этим методом.

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

ModelObject это интерфейс, которыйModelObjectImplementation реализует. Как я могу изменить объявление метода, чтобы разрешить это?

 Luiggi Mendoza17 мая 2012 г., 23:01
Добавить актерский состав вList<ModelObject> перед передачей объекта. Кроме того, ваш массив должен бытьArrayList<? extends ModelObject>

Ответы на вопрос(1)

Решение Вопроса

Вы можете использовать подстановочные знаки, если вы используете Java версии 1.5 и выше.

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

Это решение является более общим, потому что оно подходит для всехjava.util.List реализации интерфейса и подклассы / подынтерфейсыModelObject. For more details go to wildcards руководство

 CodeBlue17 мая 2012 г., 23:08
Спасибо за ответ.
 17 мая 2012 г., 23:07
Обобщения также были введены в 1.5, так что я думаю, можно с уверенностью предположить, что он использует это.

Ваш ответ на вопрос