gpt4 book ai didi

java - 如何访问子文件夹中的java类

转载 作者:行者123 更新时间:2023-12-04 06:53:31 24 4
gpt4 key购买 nike

我正在尝试制作一个可以从子文件夹“插件”加载一组未知插件的程序。所有这些插件都实现了相同的接口(interface)。我需要知道的是如何找到这个文件夹中的所有类,以便实例化和使用它们?

最佳答案

MyInterface.java

一个 stub 接口(interface)。

package test;
public interface MyInterface {
public void printSomething();
}

测试类.java

要加载的测试类,实现您的接口(interface)。
import test.MyInterface;
public class TestClass implements MyInterface {
public void printSomething() {
System.out.println("Hello World, from TestClass");
}
}

(编译后的类文件放在“子文件夹/”中。)

测试.java

一个完整的测试程序,从“子文件夹/”加载所有类文件,并在其上实例化和运行接口(interface)方法。
package test;
import java.io.File;

public class Test {
public static void main(String[] args) {

try {
ClassLoader cl = ClassLoader.getSystemClassLoader();
File subfolder = new File("subfolder");

for (File f : subfolder.listFiles()) {
String s = f.getName();
System.out.println("Loading " + s);
Class cls = cl.loadClass(s.substring(0, s.lastIndexOf('.')));

MyInterface o = (MyInterface) cls.newInstance();
o.printSomething();
}
} catch (ClassNotFoundException e) {
} catch (InstantiationException e) {
} catch (IllegalAccessException e) {
}
}
}

上述测试程序的输出:

Loading TestClass.class
Hello World, from TestClass

关于java - 如何访问子文件夹中的java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com