根据我的用例,我有一个类myClass实现接口myInterface。
public class MyClass implementing MyInterface{
...
}
我有一个以List为参数的方法。
myMethod(List<MyClass> listOfMyClass){
...
// want to make a call to third party API which has List<MyInterface>
thirdPartyAPI(listOfMyClass);
}
thirdPartyAPI(List<MyInterface> listOfMyInterface){
...
}
在上述情况下,我想在调用#thirdPartyAPI时使用listOfMyClass。目前,我收到了“方法myMethod(List)不适用于ThirdPartyAPI(List)参数。请告诉我是否需要更新我的设计或方法。我们将不胜感激。谢谢。
经历过Java Generics -- Assigning a list of subclass to a list of superclass,但无济于事。
答案 0 :(得分:1)
如果无法更改方法签名,则可能会创建必要类型的新列表:
thirdPartyAPI(new ArrayList<MyInterface>(listOfMyClass));
如果该方法定义为采用Collection<? extends MyInterface>
,则可以按原样传递列表。