Passign接口列表作为函数中的参数

时间:2016-07-13 18:20:07

标签: java android inheritance

我确信我有一个愚蠢的错误,但是我无法将实现接口的对象列表传递给需要该接口列表的函数。

这是函数签名:

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);
}

1 个答案:

答案 0 :(得分:1)

您应该使用通用类型占位符,例如关注

public <T extends PairStringInterface> void add(ArrayList<T> list) {
    // Do your things here...
}

如上所述更改方法签名,您应该可以使用任何ArrayList<Sector>作为该方法的参数传递。