AsyncTask将Generic Type传递给内部接口结果处理程序

时间:2015-10-26 18:27:04

标签: java android

如何在静态上下文中使用Type参数的AsyncTask(我打算再次进行子类化)的子类中使用变量Type参数?

例如:

public abstract class ListAsyncTask<Identifier,ListType> extends AbsAsyncTask<Identifier, List<ListType>> {
protected final String TAG = Utils.generateTag(this.getClass());
ResultListener listener;

WebProxy proxy;
String server;

public interface ResultListener {
    void handleAsyncResult(List<?> result);
}

我正在使用ResultListener返回AsyncTask的结果,我想在ResultListener的接口方法签名中使用Type变量“ListType”,但由于接口的静态上下文作为内部接口,我无法引用它。

我想我可以在AsyncTask类之外定义接口,但我们的想法是让它们紧密结合。

1 个答案:

答案 0 :(得分:1)

我认为你有2个选择。

(1)使界面通用:

public interface ResultListener<ListType> {
    void handleAsyncResult(List<ListType> result);
}

(2)使用(内部)抽象类而不是接口:

public abstract class ResultListener {
    void handleAsyncResult(List<ListType> result);
}