【问题标题】:Change the generic return type in doInBackground更改 doInBackground 中的通用返回类型
【发布时间】:2021-07-01 12:15:27
【问题描述】:

下午好,我有一个完美运行的通用 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();

【问题讨论】:

    标签: java android generics android-asynctask


    【解决方案1】:

    我认为您在创建 DaoProcessCallback 时缺少类型。

    试试

    new DaoAsyncProcessor<Tabalhador>.DaoProcessCallback()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      • 2015-12-15
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多