针对issue#I4WUWR初版修复

This commit is contained in:
jiazhengquan 2022-03-08 18:01:07 +08:00
parent 8dae97d691
commit 2cfb33af9e

View File

@ -663,18 +663,35 @@ public class ReflectUtil {
Assert.notNull(beanClass); Assert.notNull(beanClass);
Method[] allMethods = null; Method[] allMethods = null;
Class<?>[] searchInterfaces = null, parentInterfaces = null;
Class<?> searchType = beanClass; Class<?> searchType = beanClass;
Method[] declaredMethods; Method[] declaredMethods;
while (searchType != null) { while (searchType != null || searchInterfaces != null) {
declaredMethods = searchType.getDeclaredMethods(); if (searchType != null) {
if (null == allMethods) { declaredMethods = searchType.getDeclaredMethods();
allMethods = declaredMethods; if (null == allMethods) {
} else { allMethods = declaredMethods;
allMethods = ArrayUtil.append(allMethods, declaredMethods); } else {
allMethods = ArrayUtil.append(allMethods, declaredMethods);
}
Class<?>[] interfaces = searchType.getInterfaces();
for (Class<?> element : interfaces) {
allMethods = ArrayUtil.append(allMethods, element.getDeclaredMethods());
parentInterfaces = ArrayUtil.addAll(element.getInterfaces());
}
searchInterfaces = parentInterfaces;
Class<?>[] classes = searchInterfaces.length == 0 ? null : searchInterfaces;
searchInterfaces = withSuperClassMethods ? classes : null;
searchType = withSuperClassMethods ? searchType.getSuperclass() : null;
}
if (searchInterfaces != null) {
for (Class<?> searchInterface : searchInterfaces) {
allMethods = ArrayUtil.append(allMethods, searchInterface.getDeclaredMethods());
parentInterfaces = ArrayUtil.addAll(searchInterface.getInterfaces());
}
searchInterfaces = parentInterfaces.length == 0 ? null : parentInterfaces;
} }
searchType = withSuperClassMethods ? searchType.getSuperclass() : null;
} }
return allMethods; return allMethods;
} }