1

我正在使用 Anthill(UrbanCode/IBM 产品),其中一种方法需要 type 的参数java.lang.Class<? extends SourceConfig<?>> sourceConfigType

在阅读了关于泛型的教程后,我发现一个类GitSourceConfig是的子类,SourceConfig但我不明白泛型SourceConfig<?>在这种情况下是如何工作的。有任何想法吗?

最终目标是获取一个GitSourceConfig对象并调用getRepositoryUrl/setRepositoryUrl方法。Anthill Pro API 在这里,我正在查看SourceConfig课程。

4

2 回答 2

0

您的示例中的通用有界通配符类型java.lang.Class<? extends SourceConfig<?>> sourceConfigType指定它sourceConfigType是可以由 的上限类型绑定的任何类。SourceConfig

从教程中,

List<? extends Shape>是有界通配符的一个示例。这 ?代表未知类型,就像我们之前看到的通配符一样。但是,在这种情况下,我们知道这种未知类型实际上是 的子类型Shape。(注意:它可以是Shape它自己,也可以是某个子类;它不需要从字面上扩展Shape。)

Note SourceConfig本身也是通用的,这里使用的是常规的无界通配符。

于 2014-07-29T16:56:58.193 回答
0

Class是通用的——如果你调用getClass()一个String对象,结果将是类型Class<String>

在这种情况下SourceConfig<R extends Repository>,它本身就是一个泛型,所以你有嵌套的泛型。

如果你检查定义GitSourceConfig

public class GitSourceConfig extends SourceConfig<GitRepository> 

public class GitRepository extends Repository

所以Class<GitSourceConfig>匹配Class<? extends SourceConfig<?>>

于 2014-07-29T17:04:42.027 回答