Java 反射:如何正确调用没有参数的方法?
我试图通过Java反射调用一个方法,该方法没有任何参数,如下所示:Java 反射:如何正确调用没有参数的方法?,java,reflection,methods,invoke,Java,Reflection,Methods,Invoke,我试图通过Java反射调用一个方法,该方法没有任何参数,如下所示: Method getSelectedCriteriaMethod = multipleSorting.getClass().getDeclaredMethod("getSelectedCriteria", null); EstimateSortField selectedCriteria = (EstimateSortField)getSelectedCriteriaMethod.invoke(multipleSorting,
Method getSelectedCriteriaMethod = multipleSorting.getClass().getDeclaredMethod("getSelectedCriteria", null);
EstimateSortField selectedCriteria = (EstimateSortField)getSelectedCriteriaMethod.invoke(multipleSorting, null);
这是可行的,但我收到编译器警告:
warning: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Class<?> for a varargs call
non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
警告:varargs方法的非varargs调用,最后一个参数的参数类型不准确;
强制转换为java.lang.Class以进行varargs调用
最后一个参数的参数类型不精确的varargs方法的非varargs调用;
为varargs调用强制转换为java.lang.Object
调用没有任何参数的方法的正确方法是什么?您可以简单地说
selectedCriteria.invoke(multipleSorting);
我尝试了同样的方法,得到了
注意:file.java使用未经检查或不安全的操作。注意:使用-Xlint:unchecked重新编译以获取详细信息。
并且在启用lint警告时:[unchecked]未选中对getDeclaredMethod(String,Class…)的调用,作为原始类型类的成员。
@jcubic似乎做了类似Class cls代码>而不是类cls代码>。如果我猜错了,也许你可以问另一个问题。
getDeclaredMethod("getSelectedCriteria");
invoke(multipleSorting);