我收到了这个警告:非varargs调用varargs方法,最后一个参数的参数类型不精确;

Moh*_*sin 45 java

这是我的示例代码,我收到警告.

Class aClass = Class.forName(impl);
Method method = aClass.getMethod("getInstance", null);
item = (PreferenceItem) method.invoke(null, null);
Run Code Online (Sandbox Code Playgroud)

警告:

警告:非varargs调用varargs方法,最后一个参数的参数类型不精确; 强制转换为java.lang.Class,为varargs调用强制转换为java.lang.Class []进行非varargs调用并禁止此警告方法method = aClass.getMethod("getInstance",null);

请帮我解决这个问题

Jon*_*eet 72

好吧,编译器警告会告诉您需要知道的一切.它不知道是将其null视为Class<?>[]直接传递到新数组中getMethod还是作为单个null条目传递Class<?>[].我怀疑你需要前者的行为,所以铸nullClass<?>[]:

Method method = aClass.getMethod("getInstance", (Class<?>[]) null);
Run Code Online (Sandbox Code Playgroud)

如果你想要Class<?>[]用单个null元素创建一个,你可以将它转换为Class<?>:

Method method = aClass.getMethod("getInstance", (Class<?>) null);
Run Code Online (Sandbox Code Playgroud)

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

Method method = aClass.getMethod("getInstance");
Run Code Online (Sandbox Code Playgroud)