2013-07-28 47 views
3

我得到这个警告以下代码: 非可变参数调用vararargs方法与最后一个参数不精确的参数类型;我如何解决它?对于最后一个参数,非可变参数类型的非可变参数方法调用;

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

在哪一行,你得到这个 – Abubakkar

回答

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; 
} 
相关问题