0

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

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

这里有一些简单的 Eclipse 项目来说明我的意思: https ://docs.google.com/open?id=0B4MxFm-ACB3IUmswN0dpMExTVms

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

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

4

1 回答 1

0

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

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

于 2012-12-18T10:05:51.490 回答