package uk.kludje.experimental.property.reflect;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
final class ReflectionGetterFinder {
private ReflectionGetterFinder() {}
public static List<Method> findGetters(Class<?> type, Predicate<Method> excluder) {
List<Method> results = new ArrayList<>();
for (Method method : type.getMethods()) {
String name = method.getName();
int mods = method.getModifiers();
if (excluder.test(method)
|| (method.getParameterCount() > 0)
|| Modifier.isStatic(mods)
|| (!Modifier.isPublic(mods))
|| "toString".equals(name)
|| "getClass".equals(name)) {
continue;
}
results.add(method);
}
return results;
}
}