1

我有一个这样定义的类:

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

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

4

1 回答 1

1

GroupField并且AbstractUploadField都应该具有相同的泛型类型T

在行

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

第一个通配符可以不同于与第一个语句相矛盾的第二个通配符。

该声明:

Class<? extends AbstractUploadField> clazz = GroupField.class

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

于 2012-08-01T08:38:04.133 回答