使用反射从 .class 文件实例化 Java 类

psy*_*ked 4 java reflection

我有一个 .class 文件的路径,我想从正在运行的程序中实例化它。我必须“加载”这个类,但它的类路径不在我的 .jar 或我的项目中,它在它旁边的文件夹中(不能使用 Class.forName())。我如何实例化这个 .class ?

Nic*_*tto 5

您可以继续如下:

File myFolder = new File("myfolder");
URLClassLoader classLoader = new URLClassLoader(new URL[]{myFolder.toURI().toURL()}, Thread.currentThread().getContextClassLoader());
Class<?> myClass = Class.forName("my.package.Myclass", true, classLoader);
Myclass obj = (Myclass)myClass.newInstance();
Run Code Online (Sandbox Code Playgroud)

首先创建一个URLClassLoader使用上下文Classloader作为父级的实例,然后使用这个 new 加载类ClassLoader,最后创建一个实例(这里它调用一个没有参数的构造函数)。