私はこのクラスを持っています
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 を実行する前にすべての型をチェックする必要があります。
問題を解決するにはどうすればよいですか?クラスをジェネリックにして、この警告を無効にしますか?
どうもありがとう!
EDITED:使用方法を明確にするためだけに。私は抽象的な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());