有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java可以在OSGi环境中实现

据我所知,osgi中的每个包都有自己的类加载器。假设我们有三个包:1,2,3。bundle 1中有singleton类。Bundle 2加载singleton并对其进行一些更改。据我所知,如果bundle 3也加载了singleton,那么它的singleton版本就不同了。那么捆绑包2中的单身汉!=包3中的单件

我的陈述正确吗?如果他们是对的,那么这不是单身汉,是吗


共 (1) 个答案

  1. # 1 楼答案

    的确,每个bundle都有自己的类加载器,但是类加载器是“共享的”,这取决于Manifestimport-package声明。每个bundle类加载器维护一个私有映射表,告诉它哪个类加载器负责提供特定包中的类。 在您的情况下,当bundle 2加载单例时,它不会自己加载单例,而是向bundle 1类加载器请求类