为什么我会收到未经检查的警告?

Rev*_*air 5 java android lint android-studio

我不明白为什么我会收到以下代码的警告:

public static boolean isAssignableFrom(Class clazz, Object o) {
    return clazz.isAssignableFrom(o.getClass());
}
Run Code Online (Sandbox Code Playgroud)

未选中的调用isAssignableFrom(Class<?>)作为原始类型的成员java.lang.Class

当我使用该isInstance方法时(根据我的理解提供相同的结果),我没有收到警告:

public static boolean isAssignableFrom(Class clazz, Object o) {
    return clazz.isInstance(o);
}
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 2

因为Class是一个泛型类型,并且您没有告诉 Java 它Object必须是该类的实例。改变

public static boolean isAssignableFrom(Class clazz, Object o)
Run Code Online (Sandbox Code Playgroud)

类似的东西

public static <C> boolean isAssignableFrom(Class<C> clazz, C o)
Run Code Online (Sandbox Code Playgroud)