这是我的示例代码,我收到警告。
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);
请帮我解决这个问题
答案 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");