OSGi如何处理捆绑包之间的共享对象?

OSGi如何处理捆绑包之间的共享对象?,osgi,Osgi,假设一个对象有两个导出版本,其中都有属性x,但新版本引入了一个新属性y 如何创建可以同时接受一个对象的两个版本的捆绑包?假设它不会克隆对象、比较对象、放入集合等。它与对象的交互可以像测试x!=空 可以避免序列化吗?Osgi类加载规则仅在类加载时处于活动状态。例如,如果您的bundle发布了一个以对象为参数的服务,那么您可以为它提供任何实例。即使是来自包装的也不会导入。克里斯蒂安是正确的。此外,这正是为什么不应该直接共享对象,而应该共享接口的原因。虽然这仍然不能让用户同时使用两个版本的界面,但至少

假设一个对象有两个导出版本,其中都有属性
x
,但新版本引入了一个新属性
y

如何创建可以同时接受一个对象的两个版本的捆绑包?假设它不会克隆对象、比较对象、放入集合等。它与对象的交互可以像测试
x!=空


可以避免序列化吗?

Osgi类加载规则仅在类加载时处于活动状态。例如,如果您的bundle发布了一个以对象为参数的服务,那么您可以为它提供任何实例。即使是来自包装的也不会导入。

克里斯蒂安是正确的。此外,这正是为什么不应该直接共享对象,而应该共享接口的原因。虽然这仍然不能让用户同时使用两个版本的界面,但至少它会尝试做正确的事情,选择x和y都兼容的界面。在这种情况下,它必须选择最低的公分母