I am trying to get all the classes in a package by using Reflections. When I use the code of a concrete class (A in this example) it works and prints the subclasses information (B extends A so it prints B information), but when I use it with the Object class it doesn't work. How can I fix it?
This code works:
Reflections reflections = new Reflections(REFLECTION_PACKAGE);
Set<Class<? extends A>> allClasses = reflections.getSubTypesOf(A.class);
System.out.println("numberOfLCasses: " + allClasses.size());
System.out.println("classes: " + allClasses.toString());
This code doesn't:
Reflections reflections = new Reflections(REFLECTION_PACKAGE);
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);
System.out.println("numberOfLCasses: " + allClasses.size());
System.out.println("classes: " + allClasses.toString());
This is documented behavior.
public SubTypesScanner()
created new SubTypesScanner. will exclude direct Object subtypes
public SubTypesScanner(boolean excludeObjectClass)
created new SubTypesScanner.
Parameters: excludeObjectClass - if false, include direct Object subtypes in results.
The below should return subtypes of Object.class
Reflections reflections = new Reflections(REFLECTION_PACKAGE,new SubTypesScanner(false));
Set<Class<? extends Object>> allClasses = reflections.getSubTypesOf(Object.class);
System.out.println("numberOfLCasses: " + allClasses.size());
System.out.println("classes: " + allClasses.toString());