【发布时间】:2012-06-30 17:38:18
【问题描述】:
如何在osgi中将接口名称动态传递给实现类?
我需要这样的逻辑含义:
// where the interface name is provided at runtime in Component.xml of declarative sevices in osgi
public class Foo implements <T> {
// do something
}
所以无论我传递什么接口名称,它都应该实现该接口(因为该类实现了我传递的接口的所有方法)
【问题讨论】:
-
是否要为实现的接口动态提供实现?
-
目前还不清楚您要实现的目标。您是否正在尝试即时注册服务?你在追求proxies之类的东西吗? OSGi 服务已经允许您动态查找接口的实现,只要实现声明它们实现了该接口。你想解决什么额外的问题?
-
我实际上想开发一个服务于任何组件的服务。例如:PropertyManagement 组件应用于固定管理或某些书籍管理或某些 DVD 管理。如果差异组件需要不同的服务,相同的属性组件应该能够为它们提供所有这些数据,我们不应该为此编写适配器。财产管理组件应该这样做。我只是传递接口的名称,并且属性管理服务应该兼容以提供该服务
-
这种情况下你可以实现多个接口。
-
那么如果接口T包含方法void bar(),当有人调用bar()时会发生什么?