将ArrayList <subclass>传递给使用List <superclass> </superclass> </subclass>声明的方法

时间:2012-05-17 21:00:28

标签: java generics

我有一个包含泛型的参数的方法。

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

我想将ArrayList ModelObjectImplementation传递给此方法。

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

ModelObjectModelObjectImplementation实现的接口。如何更改方法声明以允许此操作?

1 个答案:

答案 0 :(得分:26)

如果您使用的是Java 1.5及更高版本,则可以使用通配符。

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

此解决方案更通用,因为它适用于java.util.List的所有ModelObject接口实现和子类/子接口。 有关详细信息,请转到通配符tutorial