在 OSGi/iPOJO 世界中,如何获取实现接口的 类 实例列表?
In the OSGi/iPOJO world, how to get a list of instances of classes implementing an interface?
在 JavaEE/CDI 世界中,我知道如何获得实现给定接口的 类 的实例列表:通过结合使用 Instance<MyInterface>
和 reflections 库。
但是在OSGI/iPOJO的世界里,怎么做呢?
我知道我使用 @Requires MyInterface anInstance
获得了一个实例。但是我怎样才能以编程方式访问所有这些 类 呢?
只需使用 BundleContext
:
@Context BundleContext context;
public List<ServiceReference> getInstancesImplementingX() {
return context.getServiceReferences(X.class);
}
在 JavaEE/CDI 世界中,我知道如何获得实现给定接口的 类 的实例列表:通过结合使用 Instance<MyInterface>
和 reflections 库。
但是在OSGI/iPOJO的世界里,怎么做呢?
我知道我使用 @Requires MyInterface anInstance
获得了一个实例。但是我怎样才能以编程方式访问所有这些 类 呢?
只需使用 BundleContext
:
@Context BundleContext context;
public List<ServiceReference> getInstancesImplementingX() {
return context.getServiceReferences(X.class);
}