假设有一个对象的导出版本,其中两个都具有属性x
,但新属性引入了新属性y
。
如何创建可以接受两个版本对象的bundle?让我们假设它不会克隆对象,比较它们,放入集合等。它与对象的交互可以像测试x != null
一样简单。
可以避免序列化吗?
答案 0 :(得分:1)
Osgi类加载规则仅在类加载时有效。例如,如果您的bundle发布了一个以Object作为参数的服务,您可以为其提供任何实例。即使是来自包装的也不会导入。
答案 1 :(得分:1)
克里斯蒂安是对的。除此之外,这正是您不应直接共享对象,而是共享接口的原因。虽然这仍然不会使消费者可以使用这两种版本的界面,但至少它会尝试做正确的事情并选择x和y兼容的界面。在这种情况下,它必须选择最低的公分母。