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

时间:2011-03-23 06:20:10

标签: java

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

Class aClass = Class.forName(impl);
Method method = aClass.getMethod("getInstance", null);
item = (PreferenceItem) method.invoke(null, null);

警告:

  

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

请帮我解决这个问题

1 个答案:

答案 0 :(得分:72)

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

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

如果您希望使用单个null元素创建Class<?>[],则可以将其强制转换为Class<?>

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

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

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