我正在使用Anthill(UrbanCode / IBM产品),其中一种方法需要java.lang.Class<? extends SourceConfig<?>> sourceConfigType
类型的参数。
阅读tutorial on generics后,我发现类GitSourceConfig
是SourceConfig
的子类,但我不明白SourceConfig<?>
的泛型如何在此上下文中工作。有任何想法吗?
最终目标是获取GitSourceConfig
个对象并调用getRepositoryUrl
/ setRepositoryUrl
方法。 Anthill Pro API为here,我正在查看SourceConfig
类。
答案 0 :(得分:0)
示例java.lang.Class<? extends SourceConfig<?>> sourceConfigType
中的通用bounded wildcard类型指定sourceConfigType
是任何类,可以被上限绑定 SourceConfig
的类型。
从教程
开始
List<? extends Shape>
是有界通配符的示例。的?代表一种未知类型,就像我们之前看到的通配符一样。但是,在这种情况下,我们知道这种未知类型实际上是Shape
的子类型。 (注意:它可能是Shape
本身,或者某个子类;它不需要字面上扩展Shape
。)
注意 SourceConfig
本身也是通用的,此处它使用的是常规无界通配符。
答案 1 :(得分: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<?>>