java - 更改 doInBackground 中的通用返回类型
问题描述
下午好,我有一个可以完美运行的通用 baseAsyncTask,java 可以在 doInBackground 中定义类型,但是在 onPostExecute 中我调用我的函数 doAsync,它组装为 Object,就像我可以创建 Override 来定义类型一样,所以我不投掷
类 DaoProcessorAsync
public abstract class DaoAsyncProcessor<T> {
public interface DaoProcessCallback<T>{
void onResult(T result);
}
private final DaoProcessCallback daoProcessCallback;
public DaoAsyncProcessor(DaoProcessCallback daoProcessCallback) {
this.daoProcessCallback = daoProcessCallback;
}
protected abstract T doAsync();
public void start(){
new DaoProcessAsyncTask().execute();
}
private class DaoProcessAsyncTask extends AsyncTask<Void, Void, T> {
@Override
protected T doInBackground(Void... params) {
return doAsync();
}
@SuppressWarnings("unchecked")
@Override
protected void onPostExecute(T t) {
if(daoProcessCallback != null)
daoProcessCallback.onResult(t);
}
}
}
调用类
new DaoAsyncProcessor<Trabalhador>(new DaoAsyncProcessor.DaoProcessCallback() {
@Override
// How to make it explicit that the return is of the Worker type
public void onResult(Object result) {
**at that point it returns object to me, and I need to do conversion**
Trabalhador trabalhador = (Trabalhador) result;
}
}){
@Override
protected Trabalhador doAsync() {
**This worker-type return should be explicit in OnRESULT, but I can't define it**
return trabalhadorDao.lerPorCPF(123);
}
}.start();
解决方案
我认为您在创建 DaoProcessCallback 时缺少类型。
尝试
new DaoAsyncProcessor<Tabalhador>.DaoProcessCallback()
推荐阅读
- jquery - 在页面完全加载 jquery3 时显示预加载器
- javascript - js 按值从对象数组中删除重复项并计算重复项
- c# - 在统一中,如何访问作为对象子级的按钮文本?
- amazon-web-services - 如何在 Fargate 上的 AWS ECS 环境中存储 GOOGLE_APPLICATION_CREDENTIALS?
- python - 在 split 命令中应用 like 运算符以过滤数据框中的数据
- python - cloudinary.exceptions.Error:使用 Flask 的空文件
- android - 如何解决“发生意外错误。请在 Google Play 商店应用程序发布中重试 (7515006A)'
- mysql - 传递给 ransacker 的 Active Admin 过滤器参数
- javascript - 在数组对象内映射数组
- python - os.path.join('BASE_DIR','template') 问题