Nếu tôi cóTại sao không reflections.getSubTypesOf (Object.class) tìm enums?
Reflections reflections = new Reflections("my.package", classLoader, new SubTypesScanner(false));
thì đây thấy lớp enum tôi
Set<Class<? extends Enum>> enums = reflections.getSubTypesOf(Enum.class);
nhưng điều này không
Set<Class<?>> classes = reflections.getSubTypesOf(Object.class);
Có một lý do cho việc này?
dụ tái sản xuất:
package cupawntae;
import org.reflections.Reflections;
import org.reflections.scanners.SubTypesScanner;
public class Reflector {
public static void main(String[] args) {
Reflections reflections = new Reflections("cupawntae", Reflector.class.getClassLoader(), new SubTypesScanner(false));
System.out.println("Objects: " + reflections.getSubTypesOf(Object.class));
System.out.println("Enums: " + reflections.getSubTypesOf(Enum.class));
System.out.println("Enum's superclass: " + Enum.class.getSuperclass());
}
}
Enum lớp:
package cupawntae;
public enum MyEnum {
}
Output:
Objects: [class cupawntae.Reflector]
Enums: [class cupawntae.MyEnum]
Enum's superclass: class java.lang.Object
Trông giống như một lỗi. Lưu ý rằng nếu enum thực hiện bất kỳ giao diện, nó đột nhiên được tìm thấy. Cho đến khi lỗi được khắc phục, bạn có thể sử dụng ví dụ: 'ClassPath.from (ClassLoader.getSystemClassLoader()). GetTopLevelClasses (" cupawntae ")' của Google ổi. Không phải là slick, nhưng được công việc làm. –
Cảm ơn nhưng có vẻ như nó được ghi lại - mặc dù điều đó lạ về điều giao diện. Làm thế nào bạn phát hiện ra điều đó? Bạn có cơ hội thực hiện một giao diện bên trong gói nhắm mục tiêu của mình không? – CupawnTae