我想知道是否有一种简单而优雅的方法来确定一个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
我用来检索Class
via 的类型Class.forName
。可用于此额外见解的所有类都源自一个基类,该基类也可用于见解。
虽然我不知道您为什么想知道一个类是否从另一个类继承,但您的解决方案看起来不错。此外,isAssignableFrom
不适合这项工作,因为它考虑了接口的实现。如果类A
实现了接口B
,B
则可以从 分配A
但A
不从 继承B
。
但是,您的方法存在一个小问题,将同一个类传递给两个参数返回 true,这是不正确的,因为同一个类不能从自身继承。您可以通过检查两个参数是否相等来解决这个问题。
您可能要考虑的另一件事是超级接口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句