那我们有FunctionalInterface:
public interface Consumer<T> { void accept(T t); }
我可以使用它:
.handle(Integer p -> System.out.println(p * 2));
我们如何在代码中解析该lambda参数的实际通用类型?
我想念什么吗?或者只是java不支持lambda类?
要更清洁:
该lambda用MethodInvoker(在所述的句柄中)包装,在其执行(Message<?>消息)中提取实际参数以进行进一步的反射方法调用.之前,它使用Spring的ConversionService将提供的参数转换为目标参数.
在这种情况下,方法句柄是实际应用程序工作之前的一些配置程序.
不同的问题,但是对于同样的问题的解决方案的预期:Java: get actual type of generic method with lambda parameter
解决方法
我最近添加了解决lambda类型参数到
TypeTools的支持.例如:
MapFunction<String,Integer> fn = str -> Integer.valueOf(str); Class<?>[] typeArgs = TypeResolver.resolveRawArguments(MapFunction.class,fn.getClass());
解决的类型参数如预期的那样:
assert typeArgs[0] == String.class; assert typeArgs[1] == Integer.class;
注意:底层实现使用了已知在Oracle JDK和OpenJDK上工作的@danielbodart概述的ConstantPool方法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。