我收到以下代码的警告: 对最后一个参数的参数类型不精确的 varargs 方法进行非 varargs 调用;我该如何修复它?
private static boolean checkImpled(Class interfaceClass, Class<?> forName) {
try {
if (!Modifier.isAbstract(forName.getModifiers())
&& !forName.isInterface()
&& interfaceClass.isAssignableFrom(forName)
&& !interfaceClass.equals(forName)
&& forName.getConstructor(null) != null) {
return true;
}
} catch (Exception e) {
// false
}
return false;
}
最佳答案
如果要获取不带参数的构造函数,应调用 forName.getConstructor(new Class[]{})
而不是 forName.getConstructor(null)
。这将消除您的警告。
因此,没有警告的代码可能如下所示:
private final static Class[] EMPTY_PARAM = new Class[]{};
private static boolean checkImpled(Class interfaceClass, Class<?> forName) {
try {
if (!Modifier.isAbstract(forName.getModifiers())
&& !forName.isInterface()
&& interfaceClass.isAssignableFrom(forName)
&& !interfaceClass.equals(forName)
&& forName.getConstructor(EMPTY_PARAM) != null) {
return true;
}
} catch (Exception e) {
// false
}
return false;
}
关于java - 对最后一个参数的参数类型不精确的 varargs 方法进行非 varargs 调用;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905177/