日期:2014-05-20  浏览次数:20821 次

如何获取一个基类的多个继承类中的最外层继承类?
如 
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 {

}