【发布时间】:2016-07-09 20:04:38
【问题描述】:
我有一个方法签名,用于使用基于 Method 类型的给定 getter 方法的反射获取 setter 方法。 该方法的签名如下:
Method getSetter(final Method getterMethod, final Class classType)
现在从一个类的方法中,我想要一个 getter 方法到关联的 setter 方法的映射。我的代码如下:
final Method[] methods = classType.getMethods();
Stream.of(methods)
.filter(ReflectionUtils::isGetter)
.collect(Collectors.toMap(Function.identity(), (method) -> getSetter(method, classType)));
我在 getSetter(method, classType) 处遇到编译错误
它说错误的第一个类型参数找到:<lambda parameter>,需要:java.lang.reflect.Method
我还尝试指定 lambda 参数的类型。见下文
Stream.of(methods)
.filter(ReflectionUtils::isGetter)
.collect(Collectors.toMap(Function.identity(), (Method method) -> getSetter(method, classType)));
现在它说无法推断功能接口类型。
【问题讨论】:
-
我无法重现这个。 ideone.com/xt5Fb6 请您检查您的导入,指定 Java 的确切版本以及您使用的编译器。
-
嘿谢谢!!实际上,对于 getSetter 方法,我正在抛出 NoSuchMethodException 我应该改为创建一个 try catch 块。我变了。它奏效了。
标签: java dictionary lambda java-stream collectors