Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.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
Scala 是否有可能在不同的类装入器中重新创建清单?_Scala_Reflection_Osgi_Scala 2.10 - Fatal编程技术网

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问这些问题的原因。