我有一个Classes数组,声明如下:
Class<?>[] serviceStack = {GetPlanningData.class, GetTimeTable.class, GetDataToSync.class, GetData.class};
类GetPlanningData
,GetTimeTable
,GetDataToSync
和GetData
都是IntentService
的子类。
我可以声明IntentService
的子类数组吗?我试过了:
Class<? extends IntentService>[] serviceStack;
和
Class<IntentService>[] serviceStack;
但第一个是“通用数组创建”,正如Android Studio所说,第二个只允许创建{IntentService.class, IntentService.class, ...}
,并且不允许任何子类。
这样可行,但我无法使用列表,因为我无法将一个List额外添加到上下文中。
答案 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);
这样你就可以输入类型。