java - 如何导入和使用指定路径中的类?

标签 java customization

我正在开发一个程序,它应该有“模块”,人们可以通过 API 编写自己的代码,然后他们可以添加他们的一个模块,假设它叫做ModuleNicerText,他们将其作为 .java 类(源代码)添加到 MyProgram\Modules 文件夹,并且该类实现了 Module

Module 类有一个方法(好吧,它有更多但为了这篇文章我会说一个),称为 onUpdate(),我希望能够以某种方式将该类导入我的代码,然后在需要时运行 .onUpdate(),我希望我解释得足够好,如果我还没有,那么这里是另一个例子:

我有一个接口(interface),名为 Module

这是模块的主体:

public interface Module {
    void onUpdate();
}

现在,我有一个名为 MyProgram 的主类,在那个类中我有这个方法:

public void onUpdate(){
    for (Module module : modules){
        module.onUpdate();
    }
}

我使用这种系统,所以我可以轻松地添加或删除组件,而不必弄乱一堆东西,如果它们都挤在一个类/方法中的话。

现在,程序运行时会创建一个目录,它是 MyProgram\Modules 任何人都可以添加一个扩展 Module 的 .java 文件那里的界面。

我希望能够查看该目录中的 .java 文件并能够为它们调用 .onUpdate() 方法,以便我的用户可以拥有尽可能多的自定义可能可以!

非常感谢任何帮助,我提前感谢您花时间阅读这面巨大的文字墙:)

最佳答案

有一篇很好的文章(有点旧,但解释很好)。 它提供了有关如何通过 UpToDate 文件检查使用代理模式的详细信息。 当您在接口(interface)中保留相同的方法,并且仅更改它的实现时,您只能在实现该接口(interface)的类中使用此技术。

查看:Dynamic Java code to your Application

关于java - 如何导入和使用指定路径中的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983625/

相关文章:

Android - 带有单独 XML 的自定义 GridView

java - 实现 Kstemmer

java - 我收到以下代码的 [I cannot be cast to java.lang.Integer] 错误。有没有其他方法可以做到这一点

java - MyBatis Spring 事务

java - getClass().getName() 返回 null

java - Switch 语句意外结果

linux - GNU Emacs 定制 - 无窗口

java - 如何在 Spring Security 3 的用户登录中添加一些自己的逻辑

javascript - 日期选择器:显示下个月/上个月的天数(如果在当前月份的结束/开始周)

javascript - 在变量后添加扩展名