Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我得到了这个警告:非varargs调用varargs方法,最后一个参数的参数类型不精确;_Java - Fatal编程技术网

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

Java 我得到了这个警告:非varargs调用varargs方法,最后一个参数的参数类型不精确;,java,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.Cl

这是我得到警告的示例代码

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)


请帮我解决这个问题

好吧,编译器警告告诉你你需要知道的一切。它不知道是将
null
视为直接传递到
getMethod
Class[]
类,还是将其视为新
Class[]
数组中的单个
null
项。我怀疑您想要前一种行为,因此将
null
强制转换为
Class[]

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

谢谢乔恩,这个警告是愚蠢的。。。。。。。。。。。。我刚刚按照您的建议更改了代码aClass.getMethod(“getInstance”);如果有人想知道(像我一样),它似乎默认将null视为整个数组
类[]
,而不是数组中的单个null元素(至少根据此处发布的答案:)。当然,这可能是最好的实践,为特殊性而施法,但在考虑是否将数组作为最后一个参数的方法重构为varargs时,最好知道这一点。在本例中,转换为
Class
将生成一个包含单个
null
元素的数组?@JaimeHablutzel:Because
Class.getMethod(String,Class)这一事实的基本原理是什么
不存在-因此15.12.2中的前两个阶段找不到任何可调用的方法。对于varargs,它之所以有效,是因为有一个变量arity方法
Class.getMethod(String,Class[])
-请参阅15.12.2.4。数组按照15.12.4.2构造,参数(值null)是数组中的唯一元素。
Method method = aClass.getMethod("getInstance", (Class<?>) null);
Method method = aClass.getMethod("getInstance");