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

Java 为什么我会收到未经检查的警告?,java,android,android-studio,lint,Java,Android,Android Studio,Lint,我不明白为什么会收到带有以下代码的警告: public static boolean isAssignableFrom(Class clazz, Object o) { return clazz.isAssignableFrom(o.getClass()); } 未选中调用isAssignableFrom(Class)作为原始类型的成员java.lang.Class 当我使用isInstance方法时(根据我的理解,它提供了相同的结果),我没有收到警告: public static b

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

public static boolean isAssignableFrom(Class clazz, Object o) {
    return clazz.isAssignableFrom(o.getClass());
}
未选中调用
isAssignableFrom(Class)
作为原始类型的成员
java.lang.Class

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

public static boolean isAssignableFrom(Class clazz, Object o) {
    return clazz.isInstance(o);
}

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

public static boolean isAssignableFrom(Class clazz, Object o)
差不多

public static <C> boolean isAssignableFrom(Class<C> clazz, C o)
公共静态布尔isAssignableFrom(类clazz,C o)

谢谢!答案澄清了这一点。但是我认为最好将
对象o
保留在适当的位置,而不是在那里使用类型参数,以便能够在运行时检查任何对象,不是吗?不完全是这样,在类型擦除之后,代码在运行时是相同的(好吧,在我的示例中有一个隐式强制转换)。假设我有3个类:
Parent
子类扩展父类
随机类
。使用type参数,我可以检查子项是否可从父项分配,但我无法为RandomClass(
isAssignableFrom(Parent.class,new RandomClass();
)执行此操作。是否使用?在那种情况下,超级C。