3

我收到以下代码的警告:最后一个参数的参数类型不准确的可变参数方法的非可变参数调用;我该如何解决?

 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;
    }
4

1 回答 1

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;
}
于 2013-07-28T05:26:30.007 回答