package saphsys.tayak;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class PackageClasses {
private static final char PKG_SEPARATOR = '.';
private static final String CLASS_FILE_SUFFIX = ".class";
private static final char DIR_SEPARATOR = '/';
public static List find(String scannedPackage, Class target) throws ClassNotFoundException {
String scannedPath = scannedPackage.replace(PKG_SEPARATOR, DIR_SEPARATOR);
List commands = new ArrayList<>();
URL root = Thread.currentThread().getContextClassLoader().getResource(scannedPath);
assert root != null;
File[] files = new File(root.getFile()).listFiles((File dir, String name) -> name.endsWith(CLASS_FILE_SUFFIX));
for (File file : files) {
String className = file.getName().replaceAll(".class$", "");
Class cls = Class.forName(scannedPackage + "." + className);
if(target.isAssignableFrom(cls)) {
commands.add(cls);
}
}
return commands;
}
}
воскресенье, 12 ноября 2017 г.
How to get all classes in package
Подписаться на:
Сообщения (Atom)