Передача ArrayList <Подкласs> в метод, объявленный с помощью List <Superclass> - программирование

Передача ArrayList <Подкласs> в метод, объявленный с помощью List <Superclass>

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

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

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

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

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

4b9b3361

Ответ 1

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

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

Это решение является более общим, поскольку оно подходит для всех реализаций интерфейса java.util.List и подклассов/подинтерфейсов ModelObject. Для получения дополнительной информации перейдите в подстановочные знаки tutorial