java - 我无法为 AsyncTask 的结果参数设置上限

标签 java android generics android-asynctask upperbound

我正在尝试为 AsyncTask 的结果参数设置上限,如下所示:

public class MyTask extends AsyncTask<T, Long, V extends Model> 

编译器提示'extends is not expected, it's expecting a comma.

我曾尝试将模型编写为抽象类和常规类。

有什么想法吗?

谢谢, 大卫

最佳答案

由于 TV 是未解析的类型参数,因此需要对它们进行参数化 MyTask。尝试声明以下内容:

public class MyTask<T, V extends Model> extends AsyncTask<T, Long, V>

我还将 calls 更改为 class - 我认为这是一个错字。

回应您的评论:

MyTask<T, V extends Model>

这里,MyClass声明类型参数TV。声明类型参数时,可以选择使用 extends boundedT 不受限制 - 它可以是任何引用类型。 V 有一个 Model上限。 - 它必须是某种类型,它是或扩展 Model

extends AsyncTask<T, Long, V>

就像任何不扩展 Object 的类的声明一样,这就是说 MyTask 扩展了 AsyncTask - 我相信你明白了. AsyncTask具有三个类型参数:在其声明中,它们称为 ParamsProgressResult。在这里,MyTask 为这些类型参数提供类型参数 - TLongV.

因此 MyTaskParams 保持为无界类型参数,解析 Progress 为具体类型 Long,并且将 ResultModel 绑定(bind)。

参见 Java Tutorials以获得对泛型的良好介绍。然后看Angelika Langer's Generics FAQ进一步的问题。

关于java - 我无法为 AsyncTask 的结果参数设置上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612393/

相关文章:

javascript - Android 设备方向 compass

android - 如何找出第一次在回收站 View 中创建的项目?

c# - 如何将通用对象列表传递给方法?

c# - EF Code First,由于 'Can' t Insert duplicate key in object' for twice separated navigation property,通用更新失败

java - 判断JLabel文本是否被截断?

java - GraphDatabaseService Shutdown() 未返回

Java SIP Servlet,如何发送 REFER 消息

java - 返回按字母顺序排序的动物列表,其最后一个字母不以参数中列出的任何字母结尾

Android导航组件回栈

scala - 如何编写一个 scala 函数来接受两种类型的参数?