如何通过接口传递对象数组列表?

3

我有一个接口定义如下:

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

我使用这个接口来返回回调。在某些回调中,我想通过接口传递ArrayList<Object1>,而在某些情况下,我想通过接口传递ArrayList<Object2>
如果我将接口方法声明为

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

以传递任何类型的对象,则会出现错误,称找到了Object1,需要Object,当我通过传递ArrayList<Object1>来调用此方法时。
3个回答

9
使用以下内容:
<T> void onQueryCompleted(int token, List<T> songList); 

请查看泛型方法以获取更多细节。


1

除非您实际需要在方法体中使用类型变量,否则可以简单地使用:

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

0

通配符是一种好的选择,但您可能希望对使用的对象类型进行某种形式的控制。

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接