如何通过接口传递Object ArrayList?

时间:2016-05-25 07:26:49

标签: java android arraylist

我的接口定义为

public interface QueryCompleteListener {
    void onQueryCompleted(int token, ArrayList<Object1> songList);
}

我正在使用此界面返回回调。在一些回调中,我想传递ArrayList<Object1>,在某些情况下,我想通过接口传递ArrayList<Object2>

如果我将接口方法声明为

  

void onQueryCompleted(int token, ArrayList<Object> songList)

传递任何类型的Object,当我通过传递ArrayList<Object1>

来调用此方法时,它会发出错误说找到Object1 required Object

3 个答案:

答案 0 :(得分:9)

使用以下内容:

<T> void onQueryCompleted(int token, List<T> songList); 

有关详细信息,请参阅Generic Methods

答案 1 :(得分:1)

除非您在方法体中确实需要一个类型变量,否则您只需使用:

void onQueryCompleted(int token, List<?> songList); 

答案 2 :(得分:0)

通配符是要走的路,但你可能想要某种形式的控制你正在使用什么类型的对象。

只需使自定义类(Object1,Object2,...)实现自定义接口(CustomSuperInterface)并声明像这样的集合

void onQueryCompleted(int token, List<? extends CustomSuperInterface> songList);