提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
查找给定类或接口的所有子类和已实现接口的方法。
//时 代 Java 公 众 号 - nowjava.com 提供 //package com.nowjava; 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,/** 时 代 J a v a 公 众 号 - nowjava.com 提 供 **/ Class<?> endBefore) { return findSuperTypes(cls, endBefore, new ArrayList<Class<?>>()); } 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 (addCla