Java:如何解析通配类型的lambda参数?
发布时间:2020-12-14 16:20:13 所属栏目:Java 来源:网络整理
导读:那我们有FunctionalInterface: public interface ConsumerT { void accept(T t);} 我可以使用它: .handle(Integer p - System.out.println(p * 2)); 我们如何在代码中解析该lambda参数的实际通用类型? 当我们将其用作内联实现时,从该类的方法中提取整数并
那我们有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方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |