我想创建一个中间抽象类,扩展AsyncTask以在密切相关的类之间共享代码。真正的具体类将扩展中间抽象类以定义细节。
对于AsyncTask,我需要指定参数,进度和结果。但是,在中间层,我没有任何实现细节。那么我应该如何留下具体类的详细定义呢?
//实现共享代码的中间层
public class SiteAsyncTask extends AsyncTask<?, ?, ?>{
//具体层
public class GetSiteAsyncTask extends SiteAsyncTask<Void, Void, Site> {
public class ListSiteAsyncTask extends SiteAsyncTask<Void, Void, ArrayList<Site> {
//在中间抽象层,如何定义参数,进度和结果是通用的。结果可以是网站或网站的Arraylist
public class SiteAsyncTask extends AsyncTask<?, ?, ?>{
//在中间层,如何定义doInBackground以使其成为通用的。它可以是Site的Site或ArrayList
protected Site doInBackground(Void... params) {
由于
答案 0 :(得分:0)
当使用泛型扩展类时,您可以重新定义子类中的泛型并将它们重新应用于父类&#39;定义。
如果您想要所有参数,
public class SiteAsyncTask<Input, Progress, Result> extends AsyncTask<Input, Progress, Result>{}
如果您只关心结果,
public class SiteAsyncTask<Result> extends AsyncTask<Void, Void, Result>{}
如果你不关心任何事,
public class SiteAsyncTask extends AsyncTask<Void, Void, Void>{}