java - 对最后一个参数的参数类型不精确的 varargs 方法进行非 varargs 调用;

标签 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;
    }

最佳答案

如果要获取不带参数的构造函数,应调用 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/

相关文章:

java - 如何让 Mockito 模拟按顺序执行不同的操作?

java - 注入(inject)EntityManager始终为null

java - Java中长字符串的解析

java - 更改突出显示文本java的字体样式

Java 8 流 : How to read lines between two lines specified by line content

java - 具有特殊接收符号的正则表达式和 ReplaceAll() 会引发错误

java - 如何按给定条件过滤@OneToMany 集合的大小

java - 将以毫秒为单位的字符串转换为日期对象(JAVA)

java - 如何使 GridPane 中的所有单元格可见且大小相同?

java - 使用 ProcessBuilder 在我的 Android 应用程序中启动服务,但它仅以 "su"(root) 开头