繁体   English   中英

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

[英]Java - How Can I Check If A Class Is Inheriting From Some Class Or Interface?

我需要检查一下:

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对象,则此方法返回true;否则返回true。 否则返回false。

资源

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

 if (c.isInterface())
            return true;

试试吧

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

怎么样

public boolean isInterface();

根据文件:

确定指定的Class对象是否表示接口类型。 返回:如果此对象表示接口,则返回true; 否则是假的。

if (c.isInterface()) return true;

isInterface

public boolean isInterface()

确定指定的Class对象是否表示接口类型。 返回:如果此对象表示接口,则返回true; 否则是假的。 sAssignableFrom

public boolean isAssignableFrom(Class<?> cls)

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

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

参数:cls - 要检查的Class对象返回:boolean值,指示是否可以将类型为cls的对象分配给此类的对象抛出:NullPointerException - 如果指定的Class参数为null。 自:JDK1.1

你试过吗?

c.isInterface()???

来自docs

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM