我得到了这个警告:对于最后一个参数,非可变参数types的可变参数方法调用;
这是我的示例代码,我收到警告。
Class aClass = Class.forName(impl); Method method = aClass.getMethod("getInstance", null); item = (PreferenceItem) method.invoke(null, null);
警告:
警告:对于最后一个参数,非可变参数types的可变参数方法调用; 强制转换为java.lang.Class,将可变参数调用强制转换为java.lang.Class []以进行非可变参数调用,并禁止此警告方法method = aClass.getMethod(“getInstance”,null);
请帮我解决这个问题
那么,编译器警告告诉你所有你需要知道的东西。 它不知道是否将null
作为Class<?>[]
直接传递给getMethod
,或者作为新的Class<?>[]
数组中的单个null
条目进行处理。 我怀疑你想要以前的行为,所以将null
为Class<?>[]
:
Method method = aClass.getMethod("getInstance", (Class<?>[]) null);
如果你想用一个null元素创build一个Class<?>[]
,你可以把它转换成Class<?>
:
Method method = aClass.getMethod("getInstance", (Class<?>) null);
或者,您可以完全删除参数,让编译器构build一个空数组:
Method method = aClass.getMethod("getInstance");