我正在尝试为 AsyncTask 的 Result 参数设置上限,如下所示:
public class MyTask extends AsyncTask<T, Long, V extends Model>
编译器抱怨 'extends 不是预期的,它需要一个逗号。
我尝试将 Model 编写为抽象类和常规类。
有任何想法吗?
谢谢你,大卫
我正在尝试为 AsyncTask 的 Result 参数设置上限,如下所示:
public class MyTask extends AsyncTask<T, Long, V extends Model>
编译器抱怨 'extends 不是预期的,它需要一个逗号。
我尝试将 Model 编写为抽象类和常规类。
有任何想法吗?
谢谢你,大卫
由于T和V是未解析的类型参数,MyTask因此需要对其进行参数化。尝试声明以下内容:
public class MyTask<T, V extends Model> extends AsyncTask<T, Long, V>
我也改为calls-class我认为这是一个错字。
回应您的评论:
MyTask<T, V extends Model>
在这里,MyClass声明类型参数T和V. 当声明类型参数时,它们可以选择用extends. T没有界限——它可以是任何引用类型。V有一个上限。Model- 它必须是某种类型 is 或 extends Model。
extends AsyncTask<T, Long, V>
就像任何声明一个不扩展的类一样Object,这就是说MyTask扩展AsyncTask——我相信你明白这一点。AsyncTask具有三个类型参数:在其声明中,它们被称为Params、Progress和Result。在这里,MyTask为这些类型参数提供类型参数- T、Long和V。
MyTask保留Params为无界类型参数也是如此,使用具体类型解析 ,并使用.ProgressLongResultModel
有关泛型的良好介绍,请参阅Java 教程。然后查看Angelika Langer 的泛型常见问题解答以了解更多问题。