我知道其中的一些,但不是全部。最值得注意的是,我知道TypeDescription.Generic.Builder
,但我对此有一个非常具体的问题。
假设我想要构建Supplier<? extends Frob<X>>
。
进一步假设我所知道的是参数的TypeDefinition
,但我不知道它代表什么(在上面的例子中,它代表Frob<X>
(。也就是说,我不知道我拥有的TypeDefinition
是类、参数化类型、泛型数组类型、类型变量、通配符还是其他什么;我只知道它是TypeDefinition
。
显然,如果我想制作Supplier<Frob<X>>
,我可以做:
TypeDescription.Generic.Builder.parameterizedType(TypeDescription.ForLoadedType.of(Supplier.class),
myTypeDefinition)
.build();
…假设我在上面的片段中没有拼写错误。
我如何从现有的CCD_ 9中生成一个适用于作为"0"提供的上界通配符CCD_;参数化的";参数化类型构建的一部分?有没有一个明显的配方我忽略了,或者这是构建者DSL中的一个缺口?
(我知道TypeDescription.Generic.Builder
上的asWildcardUpperBound()
方法,但这假设我有一个构建器可供使用,为了"引导"这样的构建器,我至少需要给它一个TypeDescription
。但我没有TypeDescription
;我有可能被参数化的TypeDefinition
,我不想使用asErasure()
。(
(我在想办法做TypeDescription.Generic.Builder.parameterizedType(myTypeDefinition).asWildcardUpperBound().build()
,但显然做不到。(
似乎确实有CCD_ 17,但我不知道这是否应该是一个";仅内部使用";类/方法。
这样一个API确实缺失了。我在今天的发行版(1.11.5(中添加了一个API,以将现有的泛型类型描述转换为允许转换为数组或通配符的构建器。API是TypeDescription.Generic.Builder.of
,它接受加载或卸载的泛型类型描述。