我知道一些,但不是全部。最值得注意的是,我知道 TypeDescription.Generic.Builder
,但我有一个非常具体的问题。
假设我想构建 Supplier<? extends Frob<X>>
。
进一步假设我所知道的是参数的 TypeDefinition
,但我不知道它代表什么(在上面的例子中它代表 {{1} })。也就是说,我不知道我拥有的 Frob<X>
是类、参数化类型、泛型数组类型、类型变量、通配符还是其他任何东西;我只知道它是一个 TypeDefinition
。
显然,如果我想制作 TypeDefinition
,我可以这样做:
Supplier<Frob<X>>
...假设我在上面的代码片段中没有打错任何字。
如何从现有的 TypeDescription.Generic.Builder.parameterizedType(TypeDescription.ForLoadedType.of(Supplier.class),
myTypeDefinition)
.build();
中制作出适合作为参数化类型构建的“参数化”部分提供的上限通配符 TypeDefinition
?是否有我忽略的明显配方,或者这是构建者的 DSL 中的差距?
(我知道 TypeDefinition
上的 asWildcardUpperBound()
方法,但这假设我有一个构建器可以使用,为了“引导”这样一个构建器,我需要给它至少有一个 TypeDescription.Generic.Builder
。但我没有 TypeDescription
;我有一个可能被参数化的 TypeDescription
,我不想使用 TypeDefinition
.)
(我正在寻找一种方法来做 asErasure()
,但我显然不能那样做。)
似乎确实有 TypeDescription.Generic.OfWildcardType.Latent::boundedAbove
,但我不知道这是否应该是“仅供内部使用”的类/方法。
答案 0 :(得分:1)
确实缺少这样的 API。我在今天的版本 (1.11.5) 中添加了一个 API,以将现有的泛型类型描述转换为允许转换为数组或通配符的构建器。 API 是 TypeDescription.Generic.Builder.of
,它接受加载或卸载的泛型类型描述。