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



我需要检查:

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

我该怎么做

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


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

使用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对象;否则返回false。

class中有一个名为class#isInterface((的方法

 if (c.isInterface())
            return true;

试试这个

if(c.isAssignableFrom(d)){
   return true;
} else {
   return false;
}

怎么样

public boolean isInterface();

根据文件:

确定指定的Class对象是否表示接口类型。退货:如果此对象表示接口,则为true;否则为false。

if (c.isInterface()) return true;

isInterface

public boolean isInterface()

确定指定的Class对象是否表示接口类型。退货:如果此对象表示接口,则为true;否则为false。可从分配

public boolean isAssignableFrom(Class<?> cls)

确定此class对象表示的类或接口是否与指定的class参数表示的类或者接口相同,或者是该类或者接口的超类或者超接口。如果是,则返回true;否则返回false。如果此Class对象表示基元类型,则如果指定的Class参数正是此Class对象,则此方法返回true;否则返回false。

具体来说,此方法测试指定Class参数表示的类型是否可以通过标识转换或扩展引用转换转换为此Class对象表示的类型。有关详细信息,请参阅Java语言规范第5.1.1节和第5.1.4节。

参数:cls-要检查的Class对象退货:布尔值,指示cls类型的对象是否可以分配给此类的对象投掷:NullPointerException-如果指定的Class参数为null。自:JDK1.1

你试过吗

c.isInterface()???

来自文档

确定指定的Class对象是否表示接口类型。

相关内容

  • 没有找到相关文章

最新更新