Java 在OSGI包中重用组件树?
在OSGI捆绑包中包含UI并在其他捆绑包中重用此UI时,是否有最佳实践 例如,我有一个自定义组件树,其中每个组件都扩展了IComponent。例如,库存字段:Java 在OSGI包中重用组件树?,java,osgi,Java,Osgi,在OSGI捆绑包中包含UI并在其他捆绑包中重用此UI时,是否有最佳实践 例如,我有一个自定义组件树,其中每个组件都扩展了IComponent。例如,库存字段: InventoryField extends BaseInventoryField BaseInventoryField extends GridField GridField extends BaseComponent BaseComponent implements IComponent 这样可以防止代码重复,如果我不这样做,我必须
InventoryField extends BaseInventoryField
BaseInventoryField extends GridField
GridField extends BaseComponent
BaseComponent implements IComponent
这样可以防止代码重复,如果我不这样做,我必须将BaseComponent、GridField和BaseInventoryField中的代码放在InventoryField类中。当某些东西发生变化并且您有很多组件时,这会产生大量的维护和代码重复
我知道不应该从另一个包扩展类(eclipse给了我“不是API”的警告)。但我不能将所有内容都放在一个包中,因为其他包必须能够创建GUI(而不必在包中重新创建整个组件树)
这类问题有解决方案吗?您肯定可以而且应该从另一个bundle扩展类,OSGi不会阻止您这样做。但是,这些类的实现现在是包的公共API的一部分,您需要跟踪API的更改。这是一个比实现接口更紧密的耦合
Eclipse帮助您跟踪API更改,查找API基线文档。谢谢@Tassos Bassoukos,今天早上我设法将所有ui基类移动到一个单独的API包中,一切都恢复正常。基线是一个有趣的特性,需要我在不久的将来关注。