我有这门课
public final class AsyncTaskManager<T extends AsyncTask<?, ?, ?> & IProgressTrackerTask
& ICancelTask>
....
T mAsyncTask;
....
public void setupTask(T asyncTask) {
mAsyncTask = asyncTask;
mAsyncTask.execute();
}
.....
但是上线了
mAsyncTask.execute();
日食 说:
Type safety: A generic array of capture#4-of ? is created for a varargs parameter
add @SuppressWarnings("unchecked")
我添加了 suppressWarning,但在执行 doInBackgound 期间出现 ClassCastException。
正如这里所说,在执行 AsyncTask 之前必须检查所有类型。
如何解决我的问题 - 使我的类通用并禁用此警告?
非常感谢!
编辑:只是为了澄清如何使用。我有抽象的 AsyncTask:
public abstract class ManagedAsyncTask<T, E, G> extends AsyncTask<T, E, G>
implements IProgressTrackerTask, ICancelTask {
和正在做实际工作的 AsyncTask:
public class GetTask extends ManagedAsyncTask<Void, Void, SearchResult> {
并在活动中:
mAsyncTaskManager = new AsyncTaskManager<GetTask>(this, this);
mAsyncTaskManager.setupTask(new GetTask());