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