获取 ServiceReference 的实现

Get Implementation of ServiceReference

我有一个 ServiceReference,我想检查该实现是否有注释。所以我需要得到实现 class.

我想出了如何获取服务实现的接口:

ServiceReference<T> reference = //
String[] interfaces = (String[]) reference.getProperty(org.osgi.framework.Constants.OBJECTCLASS);

但即使使用 JavaDoc,我也无法弄清楚如何实现(显然没有从上下文中获取服务,因为这可能是一个重量级操作,我只需要 class ).

如何从 ServiceReference 中获取实现?

您必须使用 service = context.getService(reference) 获取服务。这不是一个重量级的操作。

您也可以从使用 ServiceTracker 中获益。 除此之外,我很好奇你想要达到什么目的。。也许有更好的方法。

所以你想在不获取服务对象的情况下获取服务对象?我认为你在要求一些不可能的事情。您将需要获取服务对象来检查它的注释实现 class。没有别的办法。确保在完成后取消获取服务对象。