![](/img/trans.png)
[英]how to find all extended classes from package/single java file using reflection in java?
[英]Find all the classes inside a package in Java without reflection
我试图找到包中定义的所有类。 我已经尝试过此代码-
public static File[] getPackageContent(String packageName) throws IOException{
ArrayList<File> list = new ArrayList<File>();
Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(packageName);
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
File dir = new File(url.getFile());
for (File f : dir.listFiles()) {
list.add(f);
}
}
return list.toArray(new File[]{});
现在这是事情-如果String packageName
不包含“。” 字符,它将返回我想要的所有类的所有名称。 但是,假设packageName
包含“。”。 字符,它不返回任何内容。
这是为什么? 如果可能的话,如何找到包名称中带有“。”的包中的所有类。 性格在吗?
您可以使用反射:
private Class<?>[] scanForTasks(String packageStr) {
Reflections reflections = new Reflections((new ConfigurationBuilder()).setScanners(new Scanner[]{new SubTypesScanner(), new TypeAnnotationsScanner()}).setUrls(ClasspathHelper.forPackage(packageStr, new ClassLoader[0])).filterInputsBy((new FilterBuilder()).includePackage(packageStr)));
Set classes = reflections.getTypesAnnotatedWith(Task.class);
Class[] taskArray = (Class[])classes.toArray(new Class[classes.size()]);
return taskArray;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.