检查类对象是否是Java中另一个类对象的子类 [英] Check if a Class Object is subclass of another Class Object in Java
问题描述
我正在使用Java的反射API,并尝试处理一些字段.现在,我要确定字段的类型.字符串很简单,只需执行myField.getType().equals(String.class)
.其他非派生类也是如此.但是,如何检查派生类?例如. LinkedList
作为List
的子类.我找不到任何isSubclassOf(...)
或extends(...)
方法.我需要遍历所有getSuperClass()
并自己找到我的超级班吗?
I'm playing around with Java's reflection API and trying to handle some fields. Now I'm stuck with identifying the type of my fields. Strings are easy, just do myField.getType().equals(String.class)
. The same applies for other non-derived classes. But how do I check derived classes? E.g. LinkedList
as subclass of List
. I can't find any isSubclassOf(...)
or extends(...)
method. Do I need to walk through all getSuperClass()
and find my supeclass by my own?
推荐答案
您需要此方法:
boolean isList = List.class.isAssignableFrom(myClass);
通常,List
(以上)应替换为superclass
,而myClass
应替换为subclass
where in general, List
(above) should be replaced with superclass
and myClass
should be replaced with subclass
a)检查对象是否是您在编译时知道的类或接口(包括子类)的实例:
a) Check if an Object is an instance of a Class or Interface (including subclasses) you know at compile time:
boolean isInstance = someObject instanceof SomeTypeOrInterface;
示例:
assertTrue(Arrays.asList("a", "b", "c") instanceof List<?>);
b)检查对象是否是仅在运行时才知道的类或接口(包括子类)的实例:
b) Check if an Object is an instance of a Class or Interface (including subclasses) you only know at runtime:
Class<?> typeOrInterface = // acquire class somehow
boolean isInstance = typeOrInterface.isInstance(someObject);
示例:
public boolean checkForType(Object candidate, Class<?> type){
return type.isInstance(candidate);
}
这篇关于检查类对象是否是Java中另一个类对象的子类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!