我有两个 Class<? extends SomeClass>
变量,通过循环 HashMap
,我们称之为 A
,其中一个作为参数传递,我们将调用 B
. 我想看看 B
延伸 A
.
所以,根据我目前的理解,我想举一个例子 B
(使用 createInstance
)检查一下 instanceof
. 但这不仅相当慢,而且很麻烦,因为类需要一个空构造函数。看这里和这里,他们讨论的地方 isAssignableFrom
以及 getSuperClass
,但是 isAssignableFrom
(根据我在那里读到的)不适用于同一类(someclass.isassignablefrom(someclass)?),并且 getSuperClass
不会爬上树。
有没有办法让我检查一下 B
延伸 A
而不创建 B
?
例如:
class SomeClass {}
class ExtendingClassA extends SomeClass {}
class ExtendingClassAB extends ExtendingClassA {}
class ExtendingClassB extends SomeClass {}
boolean ClassExtendsClass(Class<? extends SomeClass> A,Class<? extends SomeClass> B) {
return A.class instanceof B.class;
}
ClassExtendsClass(SomeClass.class, ExtendingClassA.class); //true
ClassExtendsClass(SomeClass.class, ExtendingClassAB.class); //true
ClassExtendsClass(SomeClass.class, ExtendingClassB.class); //true
ClassExtendsClass(ExtendingClassA.class, ExtendingClassB.class); //false
2条答案
按热度按时间toiithl61#
是的。通常,检查您认为合适的api(javadoc)类型。在这种情况下,那就是
Class
它自己,幸运的是,它就在那里:但是isassignablefrom(从我在那里读到的)不适用于同一个类
你应该在做假设之前先测试一下。很好用。
xsuvu9jc2#
可以递归地对类对象使用getsuperclass方法,直到没有更多的超类:
上面的例子将产生