我得到了这个警告:对于最后一个参数,非可变参数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条目进行处理。 我怀疑你想要以前的行为,所以将nullClass<?>[]

 Method method = aClass.getMethod("getInstance", (Class<?>[]) null); 

如果你想用一个null元素创build一个Class<?>[] ,你可以把它转换成Class<?>

 Method method = aClass.getMethod("getInstance", (Class<?>) null); 

或者,您可以完全删除参数,让编译器构build一个空数组:

 Method method = aClass.getMethod("getInstance");