Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在OSGI包中重用组件树?_Java_Osgi - Fatal编程技术网

Java 在OSGI包中重用组件树?

Java 在OSGI包中重用组件树?,java,osgi,Java,Osgi,在OSGI捆绑包中包含UI并在其他捆绑包中重用此UI时,是否有最佳实践 例如,我有一个自定义组件树,其中每个组件都扩展了IComponent。例如,库存字段: InventoryField extends BaseInventoryField BaseInventoryField extends GridField GridField extends BaseComponent BaseComponent implements IComponent 这样可以防止代码重复,如果我不这样做,我必须

在OSGI捆绑包中包含UI并在其他捆绑包中重用此UI时,是否有最佳实践

例如,我有一个自定义组件树,其中每个组件都扩展了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包中,一切都恢复正常。基线是一个有趣的特性,需要我在不久的将来关注。