Android Java:自我发现类

时间:2017-06-16 20:58:45

标签: java android

我正在为Android编写一种框架。其他开发人员可以使用他们的插件扩展此框架。

目前,要添加新插件,需要

a)编写一个新类,它必须扩展类AbstractPlugin(由我编写)
b)对于每个插件,我的代码需要进行一些初始化。因此,在框架内的一个位置,还需要增加1个常量并添加一行新代码:

ArrayList<AbstractPlugin> plugins = new ArrayList<>[3] // increment this 

plugin[0] = new PluginBlah();
plugin[1] = new PluginShowStars();
plugin[2] = new PluginBlurSurface(); 
// here add a new line initializing plugin[N] with the Plugin you've just written
(...)

for(int i=0; i<plugins.size(); i++)
  plugin[i].initalize();

需要做到这一点在我的嘴里留下了不好的味道。我在想我的框架应该能够自我发现。我的代码能以某种方式发现所有扩展AbstractPlugin的类(它们都必须属于AbstractPlugin这样的包)并初始化自己吗?

编辑
我不认为这是两个问题的重复(我之前已经读过它们),因为它们都处理通用Java并且作为一个接受的答案给出了'ServiceLoader'机制,这在Android中不起作用。

0 个答案:

没有答案