我有一个方法签名,用于根据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)));
现在它说不能推断功能接口类型。
答案 0 :(得分:0)
您的代码适用于javac 8u25,u40,u60,u71以及ecj 3.10.2。这里唯一的问题是原始Class
参数,它会发出警告。它应该使用<?>
参数化:
Method getSetter(final Method getterMethod, final Class<?> classType) { ... }