这是我收到警告的示例代码。
Class aClass = Class.forName(impl); Method method = aClass.getMethod("getInstance", null); item = (PreferenceItem) method.invoke(null, null);
警告:
警告:最后一个参数的参数类型不精确的varargs方法的无变量调用;转换为java.lang.Class以进行varargs调用转换为java.lang.Class []以进行非varargs调用并抑制此警告。Method method = aClass.getMethod(“ getInstance”,null);
请帮我解决这个问题
好吧,编译器警告会告诉您所有您需要了解的内容。它不知道是将nulla作为Class<?>[]直接传递给getMethod,还是作为null新Class<?>[]数组中的单个条目来对待。我怀疑您想要以前的行为,因此将转换null为Class<?>[]:
null
Class<?>[]
getMethod
Method method = aClass.getMethod("getInstance", (Class<?>[]) null);
如果您希望它创建一个Class<?>[]具有单个null元素的对象,则可以将其强制转换为Class<?>:
Class<?>
Method method = aClass.getMethod("getInstance", (Class<?>) null);
或者,您可以完全删除参数,然后让编译器构建一个空数组:
Method method = aClass.getMethod("getInstance");