带有反射的NoSuchMethodException



我得到一个NoSuchMethodException时执行:

operacionDTO.getClass().getMethod("setPrioridad").invoke(operacionDTO, 0);
java.lang.NoSuchMethodException: xxxx.api.service.dto.RegasificacionDTO.setPrioridad()

但是类RegasificacionDTO确实有一个名为setPrioridad(int i)的公共方法,如果在调试时我调用:

operacionDTO.getClass().getMethods()

然后我得到一个数组的方法,其中有一个setPrioridad。我已经尝试了一些其他类似的方法,我得到同样的错误。

您需要包含参数签名。

 operacionDTO.getClass().getMethod("setPrioridad", Integer.TYPE)

方法getMethod()接受方法名和参数类型的varargs数组。在你的情况下,你应该调用getMethod("setPrioridad", int.class),一切都会工作。

这是因为在java(和大多数面向对象语言一样)中,您可以定义几个具有相同名称和不同签名的方法,因此系统使用给定的参数类型来区分它们。

 operacionDTO.getClass().getMethod("setPrioridad",new Class[]{Integer.TYPE or Integer.class}).invoke(operacionDTO, 0);

相关内容

  • 没有找到相关文章

最新更新