非varargs调用varargs方法,最后一个参数的参数类型不精确;

时间:2013-07-28 05:08:01

标签: java

我收到以下代码的警告: 非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;
    }

1 个答案:

答案 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;
}