我确信我有一个愚蠢的错误,但是我无法将实现接口的对象列表传递给需要该接口列表的函数。
这是函数签名:
public void add(ArrayList<PairStringInterface> data){ ... }
这就是我调用此函数的方式:
ArrayList<Sector> list = new ArrayList<Sector>();
add(list);
这是类Sector
public class Sector implements PairStringInterface { ... }
我收到一个错误,即参数没有任何合适的功能
Error:(88, 31) error: no suitable method found for add(ArrayList<Sector>)
method PairStringSpinnerAdapter.add(ArrayList<PairStringInterface>)
is not applicable (argument mismatch; ArrayList<Sector> cannot be converted to ArrayList<PairStringInterface>)
如果我迭代列表并添加一个方法只接收一个项目就可以了。
public void add(PairStringInterface elem) { ... }
ArrayList<Sector> list = ....
for(Sector s : list){
add(s);
}
答案 0 :(得分:1)
您应该使用通用类型占位符,例如关注
public <T extends PairStringInterface> void add(ArrayList<T> list) {
// Do your things here...
}
如上所述更改方法签名,您应该可以使用任何ArrayList<Sector>
作为该方法的参数传递。