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('.', '/');
}
}