第一部分:一个选项是使用
List
Throwables
.然后扔给他们,比如:
final RuntimeException theError = new RuntimeException(list.get(list.size() - 1));
for (int i = 0; i < list.size() - 1; i++) {
theError.addSuppressed(list.get(i));
}
throw theError;
失败。
既然您已经在使用Spring,您可以尝试以下组合:
AopUtils.getTargetClass
AopUtils.getMostSpecificMethod
一些简单的东西可以提供更多的(注意,不是绝对正确的)测试来测试你已经在运行的东西,但是:
return methods.stream().anyMatch(mthd -> {
if (!method.getName().equals(mthd.getName())) {
return false;
}
if (!method.getReturnType().isAssignableFrom(mthd.getReturnType())) {
return false;
}
final Class<?>[] parameterTypes = method.getParameterTypes();
if (mthd.getParameterTypes().length != parameterTypes.length) {
return false;
}
for (int i = 0; i < parameterTypes.length; i++) {
if (!parameterTypes[i].equals(mthd.getParameterTypes()[i])) {
return false;
}
}
return true;
});
Method.getExceptionTypes()
确认他们
Method.getDeclaringClass()
从那里爬上树;
Method.getModifiers()
但这取决于你需要多安全。