【问题标题】:How to pass the Interface name to the implementation class Dynamically如何将接口名称动态传递给实现类
【发布时间】: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()时会发生什么?

标签: java osgi


【解决方案1】:

你可以用 CGLIB 做各种疯狂的事情,但是大多数时候你应该重新考虑你做事的方式,你可能会找到一个更简单的解决方案。

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2012-08-04
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2012-03-01
    相关资源
    最近更新 更多