Using reflection to get a method; method parameters of interface types aren't found

前端 未结 3 1602
隐瞒了意图╮
隐瞒了意图╮ 2020-12-20 23:25

How do I get a method using reflection based on a parameter value when the parameter type is an interface?

In the following case (based on this example), newVal

3条回答
  •  旧巷少年郎
    2020-12-21 00:02

    Another answer suggested using Apache Commons to get the Method object using MethodUtils.getMatchingAccessibleMethod.

    However, it looks like you're not using the Method object for anything other than immediately invoking it on an instance. This being the case, you can instead use Apache Commons Lang's MethodUtils.invokeMethod(Object object, String methodName, Object... args). Rather than just returning the Method object, this instead invokes the method on the given object.

    protected void addModelProperty(String propertyName, Object newValue) {
      try {
        MethodUtils.invokeMethod(model, "add" + propertyName, newValue);
      } catch (ReflectiveOperationException e) {
      }
    }
    

提交回复
热议问题