Scala 是否有可能在不同的类装入器中重新创建清单?
更新-原始问题并不含糊,并导致抽象的讨论 澄清正在更新中 我有Scala 是否有可能在不同的类装入器中重新创建清单?,scala,reflection,osgi,scala-2.10,Scala,Reflection,Osgi,Scala 2.10,更新-原始问题并不含糊,并导致抽象的讨论 澄清正在更新中 我有immutable.HashMap[Manifest[\u],\ u],它是由类加载器A中的第三方库生成的 当HashMap通过类加载器边界时,包含共享类的键Manifest[MyClassX]将保留其hashCode 包含来自不同类装入器的类的键Manifest[MyClassY]将变得不可用 Manifest[MyClassY]内部类加载器A和Manifest[MyClassY]内部类加载器B具有不同的hashCode值 我想
immutable.HashMap[Manifest[\u],\ u]
,它是由类加载器A中的第三方库生成的
- 当
通过类加载器边界时,包含共享类的键HashMap
将保留其Manifest[MyClassX]
hashCode
- 包含来自不同类装入器的类的键
将变得不可用Manifest[MyClassY]
Manifest[MyClassY]
内部类加载器A和Manifest[MyClassY]
内部类加载器B具有不同的hashCode
值
我想知道Scala反射库是否能够从类加载器A内部的类加载器B重新创建清单[\u]
仅供参考。之后,我将比较原始清单和新清单
If hashCode is the same then
we have `Manifest[MyClass]` with `MyClass` from shared origin.
else
we have Manifest[MyClass] with MyClass from different origins.
如果hashCode是相同的,那么
我们有来自共享源的带有MyClass的Manifest[MyClass]`清单。
其他的
我们有来自不同来源的MyClass的清单[MyClass]。
我需要通过这个约束来检测和分离HashMap的键
原版 我有OSGi环境,我有manifestm,哈希代码为123,绑定包A。 我想检查bundleB中可用类的此清单是否“相同” 如果我将清单传递给bundleB,则:
- 如果bundle在我将使用反射重新创建清单m'之后为清单类提供了公共类装入器,那么它必须具有相同的哈希代码123
- 如果捆绑包有不同的类加载器,那么我将使用哈希代码987的清单m',即使清单类名相同。如果类由不同的类加载器加载,则相同类的哈希代码是不同的
类.forName(…)
,然后将hashCode
与源代码进行比较
是否还有其他可能实现同样的目标
我通过外部库绑定到清单。那么您想要实现什么?我想检查-两个清单[MyClass]的哈希代码是否在两个不同的捆绑包中相同。对于某些bundle,这将是真的(使用公共类加载器),但对于某些bundle,这将是假的。我可以读到这一点,但您为什么要这样做?这可能有助于理解您正在尝试做什么,因为我不明白为什么这个(就我所理解的描述而言)有实际用途。所以我可能错过了一些东西。仍然不明白你想要实现什么?你如何向你的老板/客户(假设她不是技术人员)描述你把钱花在了什么上?如果你不告诉我们你需要一些非常奇怪的东西的背景,Stackoverflow社区不知道如何帮助你,这就是Peter问这些问题的原因。