如何判断一个类是否继承自另一个类?

tgr

我想知道是否有一种简单而优雅的方法来确定一个Class对象是否与另一个对象具有继承关系。

我在文档中找到的所有内容都是getSuperclass(),它给出了Class对象的超类我能想到的就是这个:

public static boolean isInherited(Class child, Class parent) {
    for (Class type = child; type != null; type = type.getSuperclass()) {
        if (type.equals(parent)) {
            return true;
        }
    }
    return false;
}

我错过了什么吗?

编辑

这背后的原因是,我正在编写一个 ReST-Service 来检索对给定对象的一些见解。因此,提供了String我用来检索Classvia 的类型Class.forName可用于此额外见解的所有类都源自一个基类,该基类也可用于见解。

扫地机

虽然我不知道您为什么想知道一个类是否从另一个类继承,但您的解决方案看起来不错。此外,isAssignableFrom不适合这项工作,因为它考虑了接口的实现。如果类A实现了接口BB则可以从 分配AA不从 继承B

但是,您的方法存在一个小问题,将同一个类传递给两个参数返回 true,这是不正确的,因为同一个类不能从自身继承。您可以通过检查两个参数是否相等来解决这个问题。

您可能要考虑的另一件事是超级接口。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在OrientDB中,如何判断Java API中一个类是否继承自另一个类?

如何防止类“ a”被另一个类继承?

继承另一个类的类是否继承该类继承的类/接口?

如何使一个继承自python中另一个类的类的构造函数?

测试一个类是否从另一个类继承

另一个继承类中的继承类

如何检查一个类是否继承另一个类而不实例化它?

如何从ABC和另一个类继承

创建为实例后,一个类如何从另一个类继承

如何使一个类既实现接口又从另一个类继承

如何暗示变量是从另一个类继承的一个类?

我如何使一个类(已经存在)继承另一个类?

C ++多态性:如何测试一个类是否衍生自另一个基类?

如何检查Javascript类是否继承另一个(不创建obj)?

继承一个类,该类继承了另一个已经包含的类

从继承自另一个类的类中获取数据

是否可以使匿名类继承另一个类?

从另一个类文件继承自身

从另一个类和ActiveRecord :: Base继承

从另一个python类'继承'@property

Python从一个类继承,但重写调用另一个类的方法?

使一个类从另一个类继承并同时泛化它

从另一个类发送一个类进行继承

如何将Java类(从一个包中)继承到另一个类(在另一个包中)

如何让一个类继承另一个类所做的所有相同类

检查一个对象的类是否派生自C ++中另一个对象的类

如何使Abstract类从Python中的另一个Abstract类继承?

如何创建在模块内部并继承了另一个类的类的对象?

如何使 S4 类从另一个 S4 类正确继承?