我想知道是否有可能获得分配给构造函数的 Supplier 的返回类型。
例如
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...
最佳答案
似乎 typeTools 目前不支持解析方法引用。有一个 open issue有类似的问题。
一般来说,这种功能非常脆弱,因为未指定运行时 lambda 表示并且依赖于实现。所以它可能有一天会坏掉。如果你真的需要一个类,我建议传递实际的 Class<?>
争论。
关于java - 如何获取构造函数lambda的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822197/