我正在使用Anthill (一个UrbanCode/IBM产品),其中一个方法需要一个java.lang.Class<? extends SourceConfig<?>> sourceConfigType类型的参数。
在阅读了tutorial on generics之后,我发现GitSourceConfig类是SourceConfig的子类,但是我不理解SourceConfig<?>的泛型在这个上下文中是如何工作的。有什么想法吗?
最终目标是获得一个GitSourceConfig对象并调用getRepositoryUrl/setRepositoryUrl方法。Anthill Pro API是here,我正在研究SourceConfig类。
发布于 2014-07-30 00:56:58
示例java.lang.Class<? extends SourceConfig<?>> sourceConfigType中的泛型bounded wildcard类型指定sourceConfigType为可由的上限类型绑定的任何SourceConfig类。
在本教程中,
List<? extends Shape>就是有界通配符的一个例子。那个?表示未知类型,就像我们之前看到的通配符一样。然而,在本例中,我们知道这个未知类型实际上是Shape的一个子类型。(注意:它可以是Shape本身,也可以是某个子类;它不需要直接扩展Shape。)
Note SourceConfig本身也是通用的,在这里它使用了一个常规的无界限通配符。
发布于 2014-07-30 01:04:42
Class是泛型的--如果在String对象上调用getClass(),结果将是Class<String>类型。
在本例中,SourceConfig<R extends Repository>本身是一个泛型,所以您有嵌套的泛型。
如果您选中GitSourceConfig的定义
public class GitSourceConfig extends SourceConfig<GitRepository> 和
public class GitRepository extends Repository因此Class<GitSourceConfig>与Class<? extends SourceConfig<?>>匹配
https://stackoverflow.com/questions/25020765
复制相似问题