类的数组,特定类的子类

时间:2015-08-31 10:24:24

标签: java android arrays class generics

我有一个Classes数组,声明如下:

Class<?>[] serviceStack = {GetPlanningData.class, GetTimeTable.class, GetDataToSync.class, GetData.class};

GetPlanningDataGetTimeTableGetDataToSyncGetData都是IntentService的子类。

我可以声明IntentService的子类数组吗?我试过了:

Class<? extends IntentService>[] serviceStack;

Class<IntentService>[] serviceStack;

但第一个是“通用数组创建”,正如Android Studio所说,第二个只允许创建{IntentService.class, IntentService.class, ...},并且不允许任何子类。

编辑:我在Android编程,其主要目标是顺序调用服务。所以我把这个数组作为第一个Service的额外服务,当服务完成后,我调用数组的第一个元素,传递没有第一个元素的数组。

这样可行,但我无法使用列表,因为我无法将一个List额外添加到上下文中。

2 个答案:

答案 0 :(得分:2)

我认为这回答了你的问题:

您无法创建参数化类型数组

源:

https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays

答案 1 :(得分:2)

不要使用数组。改为创建List

List<Class<? extends IntentService>> serviceStack = Arrays.asList(
    GetPlanningData.class, GetTimeTable.class, 
    GetDataToSync.class, GetData.class);

这样你就可以输入类型。