Finding the nearest common superclass (or superinterface) of a collection of classes

后端 未结 6 1835
青春惊慌失措
青春惊慌失措 2020-12-08 14:23

Given a collection of classes, what\'s the best way to find the nearest common superclass?

E.g., given the following:

interface A {}
interface B {}
         


        
6条回答
  •  一整个雨季
    2020-12-08 15:00

    Try this.

    static  Class commonSuperClass(Class c1, Class c2, T... args) {
        return (Class)args.getClass().getComponentType();
    }
    
    static  Class commonSuperClass(Class c1, Class c2, Class c3, T... args) {
        return (Class)args.getClass().getComponentType();
    }
    
    static  Class commonSuperClass(Class c1, Class c2, Class c3, Class c4, T... args) {
        return (Class)args.getClass().getComponentType();
    }
    

    results are

    System.out.println(commonSuperClass(A.class, AImpl.class));                                     // -> A
    System.out.println(commonSuperClass(A.class, B.class, C.class));                                // -> Object
    System.out.println(commonSuperClass(A.class, AB.class));                                        // -> A
    System.out.println(commonSuperClass(AImpl.class, ABImpl.class));                                // -> A
    System.out.println(commonSuperClass(ABImpl.class, ABImpl2.class));                              // -> A
    System.out.println(commonSuperClass(AImpl.class, ABImpl.class, ABImpl2.class));                 // -> A
    System.out.println(commonSuperClass(ABImpl.class, ABImpl2.class, BCImpl.class));                // -> B
    System.out.println(commonSuperClass(AImpl.class, ABImpl.class, ABImpl2.class, BCImpl.class));   // -> Object
    

提交回复
热议问题