diff --git a/src/main/java/ru/dmitriymx/reflection/ReflectionObject.java b/src/main/java/ru/dmitriymx/reflection/ReflectionObject.java index 51d01a1..e41b4db 100644 --- a/src/main/java/ru/dmitriymx/reflection/ReflectionObject.java +++ b/src/main/java/ru/dmitriymx/reflection/ReflectionObject.java @@ -84,15 +84,39 @@ public class ReflectionObject { } } + public List methodsAllList() { + final Class clazz = object.getClass(); + + Method[] declaredMethods = clazz.getMethods(); + if (declaredMethods.length > 0) { + List result = new ArrayList<>(declaredMethods.length); + + for (Method method : declaredMethods) { + result.add(new ReflectionMethod(object, method)); + } + + return result; + } else { + return Collections.emptyList(); + } + } + @SuppressWarnings("unchecked") public ReflectionMethod method(String methodName, Class... parameterTypes) { final Class clazz = object.getClass(); + Method method; try { - return new ReflectionMethod(object, clazz.getDeclaredMethod(methodName, parameterTypes)); + method = clazz.getDeclaredMethod(methodName, parameterTypes); } catch (NoSuchMethodException e) { - throw new ReflectionException(e); + try { + method = clazz.getMethod(methodName, parameterTypes); + } catch (NoSuchMethodException e1) { + throw new ReflectionException(e1); + } } + + return new ReflectionMethod(object, method); } @Override