一尘不染

我得到了这个警告:varargs方法的non-varargs调用,其中最后一个参数的参数类型不精确;

java

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

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);

请帮我解决这个问题


阅读 266

收藏
2020-12-03

共1个答案

一尘不染

好吧,编译器警告会告诉您所有您需要了解的内容。它不知道是将nulla作为Class<?>[]直接传递给getMethod,还是作为nullClass<?>[]数组中的单个条目来对待。我怀疑您想要以前的行为,因此将转换nullClass<?>[]

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

如果您希望它创建一个Class<?>[]具有单个null元素的对象,则可以将其强制转换为Class<?>

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

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

Method method = aClass.getMethod("getInstance");
2020-12-03