我有一个定义如下的类:
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
我不明白为什么第一项任务不起作用
答案 0 :(得分:1)
GroupField
和AbstractUploadField
都应具有相同的通用类型T
在第
行中Class<? extends AbstractUploadField<?>> clazz = GroupField.class
第一个通配符可能与第二个通配符不同,后者与第一个语句相矛盾。
声明:
Class<? extends AbstractUploadField> clazz = GroupField.class
有效,但我认为你会收到警告。