具有相同FQN的多个类(ServiceLoader)

时间:2012-12-07 01:37:09

标签: java java-6 serviceloader

我正在使用java.util.ServiceLoader来创建一个轻量级的插件框架。

我目前正在努力解决如何使用相同的FQN创建多个实现类的问题。我希望在类路径上有两个相同插件的副本,并且可以访问META-INF / services目录中给出的两个实现类。

以下是一些简单的日食项目,用来说明我的意思:https://docs.google.com/open?id=0B4MxFm-ACB3IUmswN0dpMExTVms

ServiceLoaderIntf具有插件实现的简单接口。 ProjectOne和ProjectTwo代表插件。 ServiceLoader有Tester类,它遍历实现者并在它们上调用init()方法。

即使实现类具有相同的FQN,如何识别所有实现者?现在它只识别ProjectOne中的插件类。

1 个答案:

答案 0 :(得分:0)

由于服务类是由同一个共享类加载器加载的,因此您可能不会对实现类使用相同的FQN。

此外,在各种实现之间共享相同的FQN是没有意义的,因为类名应该至少暗示其目的。