使用 Class<? extends Collection> 作为方法签名

Use Class<? extends Collection> as a method signature

在方法签名中,我需要一个从 Collection(List、Set 等)扩展的任何 class 类型的参数,因此我可以 return 它们中的任何一个。

为了尝试实现这一点,我确实使用了以下方法:

public Collection<T> method(Class<? extends Collection> collectionType) {
    // Do something...
}

然而,当我尝试像这样使用它时:

method(List.class);

出现以下错误:

Error: java: incompatible types: java.lang.Class<java.util.List> cannot be converted to java.lang.Class<java.util.Collection>

我确实搜索了一个已经在 Whosebug 中解决的答案,找到了这个 post:Java - Class<? extends Collection>

但这并不能帮助我理解错误。我想我不理解通配符 (?) 的用法。

Class<? extends Collection> 的用法实际上是正确的。我遇到的问题是指方法的 return 类型,无法将 Collection<T> 转换为 List<T>.