我该如何导入和使用指定路径下的类?

4
我正在开发一个程序,该程序应具有“模块”,人们可以从API中制作自己的代码,并将其中一个称为ModuleNicerText的模块添加到MyProgram\Modules文件夹作为.java类(源代码),并且该类实现了ModuleModule类有一个方法(其实它有更多,但是为了本篇文章的缘故,我只说一个),名为onUpdate(),我希望能以某种方式将该类导入到我的代码中,然后在需要时运行.onUpdate()。希望我已经解释清楚了,如果没有,那么这里有另一个例子:
我有一个名为Module的接口。
以下是Module的主体内容:
public interface Module {
    void onUpdate();
}

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

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

我使用这种系统,这样我可以轻松地添加或删除组件,而不必在一个类/方法中进行繁琐的操作。
现在,当程序运行时,会创建一个名为MyProgram\Modules的目录,任何想要的人都可以在那里添加扩展Module接口的.java文件。
我想能够浏览该目录中的.java文件,并且能够为它们调用.onUpdate()方法,以便我的用户可以尽可能地定制!
非常感谢您提供的任何帮助,提前感谢您花时间阅读这篇巨大的文字墙 :)

1
你为什么要给自己增加这样的负担?作为API的所有者,为什么重要的是用户将他们的代码放在特定的目录中?我不记得有任何API会对其用户施加此类限制?为什么你要与众不同呢? - hfontanez
1
@hfontanez 我认为路径并不是很重要。真正的问题在于OP需要编译源文件并从中创建一个对象。 - Radiodef
1
@Radiodef,也许你不这么认为,但这正是OP所写的。我试图做的是重新陈述他的问题,或者重新思考他/她的策略。 - hfontanez
1
@hfontanez 我的意思是,“导入和使用”比“从指定路径导入”更重要。 - Radiodef
@Radiodef 你说对了!那才是真正的问题... 我需要能够编译它,然后调用方法(从中创建一个对象..) - user3830679
2
可能是如何动态编译和加载外部Java类?的重复问题。 - hankd
2个回答

0

这是一篇很好的文章(有点老,但解释很棒)。 它提供了关于如何通过UpToDate文件检查使用Proxy模式的详细信息。 在您保持接口内相同方法的同时,仅更改其实现,您可以仅在实现该接口的类中使用此技术。

看看它:将动态Java代码添加到您的应用程序


非常感谢!我现在正在使用手机,所以无法测试文章中的任何内容,但我已经阅读了大部分内容,看起来非常有前途!再次感谢您 :) - user3830679

0

你可以使用Java简单插件框架。它可以做类似于你想要的事情,并且已经准备好使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接