【问题标题】:Android: Can I have generic return type in AsyncTask - doInBackGroundAndroid:我可以在 AsyncTask 中使用通用返回类型吗 - doInBackGround
【发布时间】:2012-10-05 06:30:59
【问题描述】:

我的 AsyncTask 调用 Web 服务并在 POJO 中获取结果。现在 POJO 是不同的类型。 & AsyncTask 只有一个。那么我可以有类似的通用返回类型

protected T <T> doInBackground(Class<T> ... classTypes) {
 //Code to call webservice & get pojo
 return calssType.cast(pojoObject)
}

【问题讨论】:

  • 是的,我试过了……比如public class GeneralSearchTask&lt;T&gt; extends AsyncTask&lt;Class&lt;T&gt; , Integer, &lt;T&gt; T&gt; {....}。但我猜这是不可能的。

标签: android generics android-asynctask


【解决方案1】:

已尝试将返回类型设置为Object,那么您应该可以将其转换为您想要的任何类型。

【讨论】:

    【解决方案2】:

    创建一个类似 POJOClass 的基类,它可以通过所需的类进行扩展,在异步类中进行类型转换。

    yourTask extends AsyncTask<Object, Void, POJOClassObject> {
    
    private ModelObject doInBackground(Object... params){... return POJOClassObject}
    
    protected void onPostExecute(POJOClassObject object) {
    
    //type cast here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 2017-12-30
      • 1970-01-01
      相关资源
      最近更新 更多