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

19

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

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

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

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

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

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

Ваш Ответ

1   ответ
25

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

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

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

Обобщения также были введены в 1.5, так что я думаю, можно с уверенностью предположить, что он использует это.
Спасибо за ответ. CodeBlue

Похожие вопросы