package com.snakeT;
//import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class PackageTest {
@Test
public void test() throws ClassNotFoundException {
/*加载这个包中的所有的Class*/
String packageName = "com.snakeT";
/*首先要获取当前线程上下文的类加载器*/
ClassLoader loader = Thread.currentThread().getContextClassLoader();
/*现在就可以用getResource查找当前上下文指定名称的资源,可以是文本,图片,或者一个目录*/
URL url = loader.getResource(packageName.replace(".", "/"));
/*获取本地文件系统中的绝对路径*/
String path = url.getPath();
File file = new File(path);
/*获取到目录中的.class文件*/
File[] files = file.listFiles(f -> f.isFile() && f.getName().endsWith(".class"));
/*加载运行时类*/
List<Class> list = new ArrayList<>(files.length);
for (File f : files) {
list.add(Class.forName(
packageName.concat(".")
.concat(f.getName().replace(".class",""))));
}
list.forEach(System.out::println);
}
}
Java根据包名获取类实例
最新推荐文章于 2022-05-31 15:14:17 发布