1

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

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

编译器抱怨 'extends 不是预期的,它需要一个逗号。

我尝试将 Model 编写为抽象类和常规类。

有任何想法吗?

谢谢你,大卫

4

1 回答 1

2

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

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

我也改为calls-class我认为这是一个错字。

回应您的评论:

MyTask<T, V extends Model>

在这里,MyClass声明类型参数TV. 当声明类型参数时,它们可以选择extends. T没有界限——它可以是任何引用类型。V有一个上限Model- 它必须是某种类型 is 或 extends Model

extends AsyncTask<T, Long, V>

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

MyTask保留Params为无界类型参数也是如此,使用具体类型解析 ,并使用.ProgressLongResultModel

有关泛型的良好介绍,请参阅Java 教程。然后查看Angelika Langer 的泛型常见问题解答以了解更多问题。

于 2013-01-30T19:55:24.943 回答