为什么不允许我使用泛型执行此类作业?

时间:2012-08-01 08:35:48

标签: java generics wildcard

我有一个定义如下的类:

public abstract class AbstractUploadField<T> {

public class GroupField<T> extends AbstractUploadField<T> {

然后在Java中我试图使用泛型来确保一个类是AbstractUploadField的子类

Class<? extends AbstractUploadField<?>> clazz = GroupField.class

上面没有编译,但是如果我删除它的第二个通配符:

Class<? extends AbstractUploadField> clazz = GroupField.class

我不明白为什么第一项任务不起作用

1 个答案:

答案 0 :(得分:1)

GroupFieldAbstractUploadField都应具有相同的通用类型T

在第

行中
Class<? extends AbstractUploadField<?>> clazz = GroupField.class

第一个通配符可能与第二个通配符不同,后者与第一个语句相矛盾。

声明:

Class<? extends AbstractUploadField> clazz = GroupField.class

有效,但我认为你会收到警告。