如
class Base;
class Extend extends Base;
class SubExtend extends Extend;
我现在找到Base的所有子类包括Extend, SubExtend
但我如何定位到SubExtend就是最外层的子类呢?
即我要实现这样的方法 Class findOuterExtend(List extendsClass);
------解决方案--------------------
你这个想法需要用java的反射来实现,在apache提供的common-beans组件里面提供了对JavaBean的一些处理可以借鉴下
------解决方案--------------------
for example
- Java code
public class Test { public static void main(String[] args) { List<Class<? extends A>> list = new ArrayList<Class<? extends A>>(); list.add(A.class); list.add(C.class); list.add(B.class); Class<? extends A> cls = findOuterClass(list); System.out.println(cls); } public static <T> Class<? extends T> findOuterClass(List<Class<? extends T>> list) { if (list == null || list.size() == 0) return null; Class<? extends T> outerClass = list.get(0); for (int i=0; i<list.size(); ) { try { Class<? extends T> cls = list.get(i); cls = outerClass.asSubclass(cls); i++; } catch (Exception e) { outerClass = list.get(i); } } return outerClass; }}class A {}class B extends A {}class C extends B {}