无需在Java中重新编译即可添加实现?

Eri*_*son 4 java implementation jar recompile

嘿大家,我是一名大学生,有着我第一次真正的工作机会(令人兴奋).我现在处于需要查看编程示例的阶段,他们给了我在Java中实现随机数生成器服务的任务,有两种不同的实现(一种使用内置的东西,另一种是我选择的) .代码是容易的部分,但任务的一部分让我困惑......这里是:

作为评估者,我应该能够执行以下操作:使用候选jar文件编译我自己的项目.使用候选可执行jar注册我的解决方案.运行候选可执行jar,以某种方式告诉它运行我的实现.

基本上我正在将我的代码变成可执行文件.jar,和

评估者应该能够使用候选人开发的代码和编译类来插入他们自己的随机数生成器实现,而无需重新编译候选代码.

这是什么意思?也许我只是错过了一些明显的东西?我不确定如何让他们只是投入他们自己的实现而不必重新编译所有内容...希望它不是太大的任务,因为我没有在我的大学里听到类似的东西(我认为) .

任何帮助/见解真的很感激!

Kev*_*uli 10

我认为这只是意味着您应该提供一个RandomNumberGenerationStrategy接口作为公共API的一部分,评估者可以实现.

然后提供另一个钩子,他可以注册他的接口的特定实现,然后通过回调调用.

  • 像-DRandomNumberStrategy = my.own.random.impl.MyGenerator这样的简单vm参数将提供此功能.您可以使用自己代码中的值来实例化并执行它. (2认同)

Aar*_*lla 5

他们希望您使用URLClassLoader(参见文档)加载实现JAR,然后使用反射来实例化主类并调用正确的方法来调用随机数生成器.