package com.baeldung.reflections; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Date; import java.util.Set; import java.util.regex.Pattern; import org.reflections.Reflections; import org.reflections.scanners.MethodAnnotationsScanner; import org.reflections.scanners.MethodParameterScanner; import org.reflections.scanners.ResourcesScanner; import org.reflections.scanners.Scanner; import org.reflections.scanners.SubTypesScanner; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; public class ReflectionsApp { public Set> getReflectionsSubTypes() { Reflections reflections = new Reflections("org.reflections"); Set> scannersSet = reflections.getSubTypesOf(Scanner.class); return scannersSet; } public Set> getJDKFunctinalInterfaces() { Reflections reflections = new Reflections("java.util.function"); Set> typesSet = reflections.getTypesAnnotatedWith(FunctionalInterface.class); return typesSet; } public Set getDateDeprecatedMethods() { Reflections reflections = new Reflections(java.util.Date.class, new MethodAnnotationsScanner()); Set deprecatedMethodsSet = reflections.getMethodsAnnotatedWith(Deprecated.class); return deprecatedMethodsSet; } @SuppressWarnings("rawtypes") public Set getDateDeprecatedConstructors() { Reflections reflections = new Reflections(java.util.Date.class, new MethodAnnotationsScanner()); Set constructorsSet = reflections.getConstructorsAnnotatedWith(Deprecated.class); return constructorsSet; } public Set getMethodsWithDateParam() { Reflections reflections = new Reflections(java.text.SimpleDateFormat.class, new MethodParameterScanner()); Set methodsSet = reflections.getMethodsMatchParams(Date.class); return methodsSet; } public Set getMethodsWithVoidReturn() { Reflections reflections = new Reflections(java.text.SimpleDateFormat.class, new MethodParameterScanner()); Set methodsSet = reflections.getMethodsReturn(void.class); return methodsSet; } public Set getPomXmlPaths() { Reflections reflections = new Reflections(new ResourcesScanner()); Set resourcesSet = reflections.getResources(Pattern.compile(".*pom\\.xml")); return resourcesSet; } public Set> getReflectionsSubTypesUsingBuilder() { Reflections reflections = new Reflections(new ConfigurationBuilder().setUrls(ClasspathHelper.forPackage("org.reflections")) .setScanners(new SubTypesScanner())); Set> scannersSet = reflections.getSubTypesOf(Scanner.class); return scannersSet; } }