protected String getCommonSuperClass()

in bytekit-core/src/main/java/com/alibaba/bytekit/asm/ClassLoaderAwareClassWriter.java [34:59]


    protected String getCommonSuperClass(String type1, String type2) {
        if (classLoader == null) {
            return super.getCommonSuperClass(type1, type2);
        }
        Class<?> c, d;
        try {
            c = Class.forName(type1.replace('/', '.'), false, classLoader);
            d = Class.forName(type2.replace('/', '.'), false, classLoader);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        if (c.isAssignableFrom(d)) {
            return type1;
        }
        if (d.isAssignableFrom(c)) {
            return type2;
        }
        if (c.isInterface() || d.isInterface()) {
            return "java/lang/Object";
        } else {
            do {
                c = c.getSuperclass();
            } while (!c.isAssignableFrom(d));
            return c.getName().replace('.', '/');
        }
    }