//package com.nowjava;//N o w J a v a . c o m 提 供
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class Main {
public static void main(String[] argv) throws Exception {
Class cls = String.class;
Class endBefore = String.class;
System.out.println(findSuperTypes(cls, endBefore));
}
/**
* Method that will find all sub-classes and implemented interfaces
* of a given class or interface. Classes are listed in order of
* precedence, starting with the immediate super-class, followed by
* interfaces class directly declares to implemented, and then recursively
* followed by parent of super-class and so forth.
* Note that <code>Object.class</code> is not included in the list
* regardless of whether <code>endBefore</code> argument is defined or not.
*
* @param endBefore Super-type to NOT include in results, if any; when
* encountered, will be ignored (and no super types are checked).
*/
public static List<Class<?>> findSuperTypes(Class<?> cls,
Class<?> endBefore) {
return findSuperTypes(cls, endBefore, new ArrayList<Class<?>>());
}
//from 时 代 Java - nowjava.com
public static List<Class<?>> findSuperTypes(Class<?> cls,
Class<?> endBefore, List<Class<?>> result) {
_addSuperTypes(cls, endBefore, result, false);
return result;
}
private static void _addSuperTypes(Class<?> cls, Class<?> endBefore,
Collection<Class<?>> result, boolean addClassItself) {
if (cls == endBefore || cls == null || cls == Object.class) {
return;
}
if (addClassItself) {
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。