/** Recursive processing of interfaces. * Methods are stored by reference. * @param interfaces for whom members are collected */ private void processInterfaces(Class<?>[] interfaces) { for (Class<?> intr : interfaces) { if (isPackageAccessible(intr)) { memberCache.init(intr); for (Field f : intr.getDeclaredFields()) cacheMember(Invocable.get(f)); for (Method m: intr.getDeclaredMethods()) if (isPublic(m) || haveAccessibility()) cacheMember(memberCache.get(intr) .findMethod(m.getName(), m.getParameterTypes())); } processInterfaces(intr.getInterfaces()); } }
for (Field f : type.getDeclaredFields()) if (isPublic(f) || haveAccessibility()) cacheMember(Invocable.get(f)); for (Method m : type.getDeclaredMethods()) if (isPublic(m) || haveAccessibility()) if (clazz == type) cacheMember(Invocable.get(m)); else cacheMember(memberCache.get(type) .findMethod(m.getName(), m.getParameterTypes())); for (Constructor<?> c: type.getDeclaredConstructors()) if (clazz == type) cacheMember(Invocable.get(c)); else cacheMember(memberCache.get(type) .findMethod(c.getName(), c.getParameterTypes()));