我得到一个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);