Java 在Android中转换异步任务
我的活动中有两个Java 在Android中转换异步任务,java,android,generics,casting,android-asynctask,Java,Android,Generics,Casting,Android Asynctask,我的活动中有两个AsyncTasks,每个任务使用不同的参数类型: private class TaskA extends AsyncTask<Void, byte[], Boolean> { ... } private class TaskB extends AsyncTask<byte[], byte[], Boolean> 及 但是,当我尝试在代码的后面执行myTask时 myTask.execute(); 这会导致编译错误: 类型安全:一个通用的捕获数组#7-
AsyncTasks
,每个任务使用不同的参数类型:
private class TaskA extends AsyncTask<Void, byte[], Boolean> { ... }
private class TaskB extends AsyncTask<byte[], byte[], Boolean>
及
但是,当我尝试在代码的后面执行myTask
时
myTask.execute();
这会导致编译错误:
类型安全:一个通用的捕获数组#7-of?是为varargs参数创建的
如何根据switch case语句将myTask
正确转换为TaskA
或TaskB
更新:
使用以下命令初始化myTask
:
private AsyncTask myTask = null;
一个警告:
myTask= new TaskA();
myTask.execute();
The method execute(Object...) belongs to the raw type AsyncTask. References to generic type AsyncTask<Params,Progress,Result> should be parameterized
看起来对象
myTask
从未真正转换为类型TaskA
或TaskB
?如果您指望能够在两种任务类型上调用SendDataToNetwork,那么您的AsyncTask子类可能应该实现一个声明它的接口。您需要向我们展示更多的代码。警告表示您正在使用带有varargs参数的方法。您应该说明这一点。请尝试不要使用泛型语法define myTask,即private AsyncTask myTask=null;请看上面更新的代码。你的问题是你认为你的类有一个共同的祖先,而他们没有AsyncTask
和AsyncTask
是不同的类。问题是父类AsyncTask
没有方法SendDataToNetwork
,我将myTask
声明为AsyncTask
您可以扩展AsyncTask,同时实现一个接口。
private AsyncTask myTask = null;
myTask= new TaskA();
myTask.execute();
The method execute(Object...) belongs to the raw type AsyncTask. References to generic type AsyncTask<Params,Progress,Result> should be parameterized
The method SendDataToNetwork(byte[]) is undefined for the type AsyncTask