我收到以下代码的警告: 非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;
}
答案 0 :(得分:0)
如果您想获取不带参数的构造函数,则应调用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;
}