简体   繁体   English

将ArrayList <Subclass>传递给使用List <Superclass>声明的方法

[英]Passing ArrayList<Subclass> to method declared with List<Superclass>

I have a method with a parameter containing generics. 我有一个方法,其中包含一个包含泛型的参数。

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

I want to pass an ArrayList of ModelObjectImplementation s to this method. 我想将ModelObjectImplementationArrayList传递给此方法。

ArrayList<ModelObjectImplementation> myList;
myList = ...

readList(myList); // gives compilation error

ModelObject is an interface that ModelObjectImplementation implements. ModelObjectModelObjectImplementation实现的接口。 How can I change the method declaration to allow this? 如何更改方法声明以允许此操作?

You can use wildcards, if you're using Java version 1.5 and higher. 如果您使用的是Java 1.5及更高版本,则可以使用通配符。

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

This solution is more generic, because it fits for all java.util.List interface implementations and subclasses/subinterfaces of ModelObject . 此解决方案更通用,因为它适用于ModelObject所有java.util.List接口实现和子类/子接口。 For more details go to wildcards tutorial 有关更多详细信息,请转到通配符教程

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM