Передача 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
. Как я могу изменить объявление метода, чтобы это разрешить?
Ответы
Ответ 1
Вы можете использовать подстановочные знаки, если используете Java версии 1.5 и выше.
public static void readList(List<? extends ModelObject> list)
Это решение является более общим, поскольку оно подходит для всех реализаций интерфейса java.util.List
и подклассов/подинтерфейсов ModelObject
.
Для получения дополнительной информации перейдите в подстановочные знаки tutorial