本来是实现XXX接口
private TeamAssignable findImplsTeamAssignable(JoinPoint joinPoint) {
for (var arg : joinPoint.getArgs()) {
Class<?> superInterface = getSuperInterface(arg.getClass());
if(superInterface!=null && superInterface==XXX.class){
return (TeamAssignable) arg;
}
}
return null;
}
public Class<?> getSuperInterface(Class<?> cls) {
Deque<Class<?>> stack = new ArrayDeque<>();
stack.push(cls);
while (!stack.isEmpty()) {
Class<?> currentClass = stack.pop();
Class<?>[] interfaces = currentClass.getInterfaces();
for (Class<?> iface : interfaces) {
if (iface == XXX.class) {
return iface;
} else {
stack.push(iface);
}
}
Class<?> superClass = currentClass.getSuperclass();
if (superClass != null) {
stack.push(superClass);
}
}
return null;
}