有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过函数接口方法签名获取类构造函数

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

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

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

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

共 (1) 个答案

  1. # 1 楼答案

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

    最好选择标准的抽象工厂或类似工厂

    然而,MethodHandle将以最小的开销(我认为)构造所需的Functionobjct。如果每次都查找fn,则会有开销

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

    异常处理被省略