[英]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.