【发布时间】:2016-03-10 16:34:09
【问题描述】:
给定
public class Foo {
public static class FooBuilder { ... }
}
在给定 Foo.FooBuilder.class 的情况下,我想在返回 Foo 的第三个类上编写一个方法
即
Foo f = x.make(Foo.FooBuilder.class, someData);
是否可以使用可以暗示返回类型的泛型声明签名?是否有一些语言特性可以让我说“U 型是 T 型的外部类”?
显然,可以指定该类型扩展或作为泛型类型的基础(分别为U extends T 或U super T),但我正在寻找U outer T,我认为这不仅仅是Java 至少可以在 1.7 中提供,甚至是间接的,这是我的目标。
到目前为止,我只是简单地声明了内部类型和外部类型,这虽然有效,但比我所追求的定义更广泛,而且看起来也很笨拙。
public <TYPE,BUILDER> TYPE make(Class<BUILDER> builderClass, Map<String,Object> data) {
// Construct TYPE
}
有没有办法在不显式提供模板参数的情况下推断 TYPE?
【问题讨论】:
-
当您有这样的问题时,非常值得参考 JavaDoc。