Java 类数组,特定类的子类

Java 类数组,特定类的子类,java,android,arrays,class,generics,Java,Android,Arrays,Class,Generics,我得到了一个类数组,声明如下: Class<?>[] serviceStack = {GetPlanningData.class, GetTimeTable.class, GetDataToSync.class, GetData.class}; 及 但是第一个是一个通用数组创建,正如Android Studio所说,第二个只允许创建{IntentService.class,IntentService.class,…},不允许子类 编辑:我正在用Android编程,主要目标是依次调用

我得到了一个类数组,声明如下:

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

但是第一个是一个通用数组创建,正如Android Studio所说,第二个只允许创建{IntentService.class,IntentService.class,…},不允许子类

编辑:我正在用Android编程,主要目标是依次调用服务。所以我把这个数组作为第一个服务的额外部分,当服务完成后,我调用数组的第一个元素,传递数组而不传递第一个元素


这是可行的,但我不能使用列表,因为我无法将列表添加到上下文中。

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

不能创建参数化类型的数组

资料来源:


我想这回答了你的问题:

不能创建参数化类型的数组

资料来源:


不要使用数组。改为创建一个列表:


这样,您将是类型安全的。

不要使用数组。改为创建一个列表:


通过这种方式,您将是类型安全的。

我将解决这个问题,并创建一个通用集合。列表行中的某些内容您有什么问题?我必须按顺序调用一系列IntentService,但我不能使用一个很好的列表,因为在Android上编程时,我不能额外添加一个列表。我会解决这个问题并创建一个通用集合。列表行中的某些内容您的问题是什么?我必须按顺序调用一系列IntentService,但我不能使用一个列表,因为在Android上编程时,我不能额外添加一个列表。不幸的是,严格来说这不是真的:确切地说,您不能直接实例化不可恢复类型的数组。因此,您可以实例化像new Foo[1]这样的数组,因为它是可重新定义的。唯一可重新定义的参数化类型是无界通配符参数化类型。不幸的是,严格来说,这不是真的:确切地说,您不能直接实例化不可重新定义类型的数组。因此,您可以实例化一个数组,如new Foo[1],因为它是可重新定义的唯一可重新定义的参数化类型是一个无界通配符参数化类型。那太好了,但我不能使用集合,因为在Android上编程时,我必须将此数组放入一个额外的数组中,而不能将列表放入额外的数组中。那太好了,但是我不能使用集合,因为在Android上编程我必须把这个数组放到一个额外的数组中,我不能把列表放到一个额外的数组中。
Class<? extends IntentService>[] serviceStack;
Class<IntentService>[] serviceStack;
List<Class<? extends IntentService>> serviceStack = Arrays.asList(
    GetPlanningData.class, GetTimeTable.class, 
    GetDataToSync.class, GetData.class);