类<?扩展T>用法

Har*_*ana 0 java

我想知道具有这种语法的用法是什么.我写了一个简单的程序如下,

public class Sample{

    public static void main(String[] args) {
        Class<? extends Collection> someCollectionClass = someMethod();
    }

    public static ArrayList someMethod() {
        return new ArrayList();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么它显示编译错误,

- Collection is a raw type. References to generic type Collection<E> should be 
 parameterized
- Type mismatch: cannot convert from ArrayList to Class<? extends Collection>
Run Code Online (Sandbox Code Playgroud)

在这里,该类期望一个类(它实际上是它接受的对象,它是吗?是吗?)确实扩展了Collection.那么ArrayList有什么问题?

如果我声明一些东西,它也是一个有效的if语法 Class<? extends T>

Oli*_*rth 5

因为ArrayList不是Class.也许你的意思是someMethod().getClass()