编写自己的插件基础结构很有趣,但完全不必要.这是一个已经解决的问题,你不会写出比已经存在的更高质量的问题,并且已经在现场证明了.我会说你选择你的战斗.
我之前尝试过JSPF,发现它非常容易使用.而这来自于一个完全按照你要做的事情的人:我已经创建了自己的插件基础设施(基本上是为了同样的目的:动态加载迷你游戏),自己编写类加载和框架.如果我再次这样做,我会毫不犹豫地使用像JSPF这样的框架.
要从符合特定界面(比如游戏)的目录中的jar中加载所有类,它就像以下一样简单:
PluginManager pm = PluginManagerFactory.createPluginManager();
pm.addPluginsFrom(new File("plugins/").toURI());
Collection games = new PluginManagerUtil(pm).getPlugins(Game.class);
IIRC对Game实现者的唯一要求是用@PluginImplementation注释标记它.
编辑
然后:
for ( Game game : games ) {
game.someMethod();
}