【问题标题】:How to declare function which accepts Generic AsyncTask as an argument如何声明接受通用 AsyncTask 作为参数的函数
【发布时间】:2014-02-17 10:48:07
【问题描述】:

我的应用程序中有许多活动和异步任务。我想用一个接受通用 AsyncTask 和布尔值的方法定义一个接口。我将在所有活动中实现该接口,并希望从 AsyncTask 调用该接口的方法。

我应该如何声明接受所有 AsyncTask 子类的方法?我想让它成为通用的,这样我就可以使用 instanceof 运算符来确定哪个 asyncTask 在活动中调用了 Override 方法。 我尝试使用:

public onUpdate(AsyncTask<Params, Progress, Result> task,boolean show);

但不允许。

【问题讨论】:

    标签: android android-asynctask instanceof


    【解决方案1】:

    你可以这样声明:

    public void onUpdate(AsyncTask<?, ?, ?> task, boolean show) {
    
    }
    

    然后您可以通过扩展 AsyncTask 来使用它:

    private class SomeTask extends AsyncTask<String, Integer, Long> {
    
        @Override
        protected Long doInBackground(String... params) {
            // TODO Auto-generated method stub
            return null;
        }
    
    }
    

    并调用你的方法:

    onUpdate(new SomeTask(), true);
    

    【讨论】:

      【解决方案2】:

      可以如下声明方法...

      public void onUpdate(AsyncTask<Object, Object, Object> task,boolean show);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 2020-06-28
        • 2019-03-26
        相关资源
        最近更新 更多