繁体   English   中英

通过功能接口方法签名获取 class 构造函数

[英]Get class constructor by functional interface method signature

我知道我可以使用构造函数引用作为高阶方法的参数,如下所示:

collection.stream().map(MyClass::new);

但是我将MyClass作为变量Class<MyClass> clazz = MyClass.class 我可以使用它将构造函数引用传递给.map(Function)方法吗? 我想做这样的事情,有办法吗?

Class<MyClass> clazz = MyClass.class;
collection.stream().map(clazz.getConstructor())

标准免责声明:使用反射几乎总是一个坏主意。

对于标准抽象工厂或类似的,go 要好得多。

但是, MethodHandle将以最小的开销(我认为)构造所需的Function 如果您每次都查找fn ,那么就会产生开销。

    Function<T, R> fn = (Function<T, R>)
        MethodHandleProxies.asInterfaceInstance(
            Function.class,
            MethodHandles.lookup().findConstructor(clazz,
               MethodType.methodType(Void.TYPE, tClass)
           )
        );

省略了异常处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM