/**
* Traverse XML data object hierarchy and collect all descendants of a root class.
*
* @param rootClass root class of type hierarchy
* @param clazz type class to be processed
* @param classes set to collect type classes
*/
public static void collectXmlTypes(Class<?> rootClass, Class<?> clazz, Set<Class<?>> classes) {
if (classes.contains(clazz)) {
return;
}
if (clazz != rootClass && rootClass.isAssignableFrom(clazz) && !Modifier.isAbstract(clazz.getModifiers())) {
classes.add(clazz);
}
XmlSeeAlso xmlSeeAlso = clazz.getAnnotation(XmlSeeAlso.class);
if (xmlSeeAlso != null) {
Collection<Class<?>> referencedClasses = new HashSet<>(Arrays.<Class<?>>asList(xmlSeeAlso.value()));
for (Class<?> referencedClass : referencedClasses) {
collectXmlTypes(rootClass, referencedClass, classes);
}
}
}
TypeUtils.java 文件源码
java
阅读 25
收藏 0
点赞 0
评论 0
项目:components
作者:
评论列表
文章目录