如果我有爲什麼沒有reflections.getSubTypesOf(Object.class)查找枚舉?
Reflections reflections = new Reflections("my.package", classLoader, new SubTypesScanner(false));
那麼這個發現我的枚舉類
Set<Class<? extends Enum>> enums = reflections.getSubTypesOf(Enum.class);
但這並不
Set<Class<?>> classes = reflections.getSubTypesOf(Object.class);
是否有什麼原因呢?
重複的例子:
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());
}
}
枚舉類:
package cupawntae;
public enum MyEnum {
}
輸出:
Objects: [class cupawntae.Reflector]
Enums: [class cupawntae.MyEnum]
Enum's superclass: class java.lang.Object
看起來像一個bug發現。請注意,如果枚舉實現了任何接口,它會突然被發現。在bug修復之前,你可以使用例如Google Guava的ClassPath.from(ClassLoader.getSystemClassLoader())。getTopLevelClasses(「cupawntae」)。不是光滑的,而是完成工作。 –
感謝但看起來像它的記錄 - 雖然這是奇怪的接口的事情。你是怎麼發現的?你有沒有在你的目標包裏實現一個接口? – CupawnTae