我想知道是否有可能获得分配给构造函数的供应商的退货类型。
E.g。
Supplier<Foo> sFoo = Foo::new;
如何从供应商那里获得“Foo.class”?我一直在使用typetools来解决其他问题。
这有效,例如:
Supplier<Foo> sFoo = () -> new Foo();
Class<?> fooClasss = net.jodah.typetools.TypeResolver.resolveRawArguments(Supplier.class, sFoo.getClass())[0];
// fooClass == Foo.class
但如果我将供应商分配为:Supplier<Foo> sFoo = Foo::new
,则无法解析退货类型......
有什么想法?我没有必要使用typetools btw ......
答案 0 :(得分:2)
似乎typeTools目前不支持解析方法引用。有一个类似问题的open issue。
通常,此类功能非常脆弱,因为未指定运行时lambda表示并且依赖于实现。所以有一天它可能会破裂。如果你真的需要一个类,我会建议传递实际的Class<?>
参数。