Java - 如何检查某个类是否从某个类或接口继承?

2022-09-02 19:55:47

我需要检查:

public static boolean check(Class<?> c, Class<?> d)
{
    if (/* c inherits from d */)
        return true;
    else
        return false;
}

我该怎么做?

如果没有,这有可能吗?c.newInstance()


标题第一次是错误的。现在它是正确的。

答案 1

isAssignableFrom

if(d.isAssignableFrom(c)){
    // then d is a superclass of c
    // in other words, c inherits d
}

确定此 Class 对象所表示的类或接口是否与指定的 Class 参数所表示的类或接口相同,或者是否是其超类或超接口。如果是这样,则返回 true;否则,它将返回 false。如果此 Class 对象表示基元类型,则当指定的 Class 参数恰好是此 Class 对象时,此方法返回 true;否则,它将返回 false。


答案 2

类中有一个名为 Class#isInterface() 的方法

 if (c.isInterface())
            return true;