1

次のように定義されたクラスがあります。

public abstract class AbstractUploadField<T> {

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

次にJavaでジェネリックを使用して、クラスがAbstractUploadFieldのサブクラスであることを確認しようとしています

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

上記はコンパイルされませんが、2 番目のワイルドカードを削除するとコンパイルされます。

Class<? extends AbstractUploadField> clazz = GroupField.class

最初の課題がうまくいかない理由がわかりません

4

1 に答える 1

1

GroupFieldAbstractUploadField両方が同じジェネリック型を持つ必要がありますT

ラインで

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

最初のワイルドカードは、最初のステートメントと矛盾する 2 番目のワイルドカードとは異なる場合があります。

ステートメント:

Class<? extends AbstractUploadField> clazz = GroupField.class

動作しますが、警告が表示されていると思います。

于 2012-08-01T08:38:04.133 に答える