json4s JValue scala classTag 工作错误

json4s JValue scala classTag works wrong

在我的代码中,我使用 classTag[JValue] 想要得到 org.json4s.JsonAST.JValue , 但实际上它 returns org.json4s.JsonAST$JValue, 很奇怪!为什么会有$? 我是使用 scala 的新手,有人可以回答我吗?非常感谢

您用来指代 class/method/etc 的名称。在您的代码中,它在编译器生成的字节码中的名称不必相同。与 Java 编译器相比,Scala 编译器需要更多地进行名称修改,但这种特定情况对于两者都是相同的。

原因是 JVM 上并不真正存在内部 classes:它们是普通的 classes,有一个包含外部实例的附加字段。 class 的 JVM 名称类似于 <outer_class>$<inner_class>.

在 Scala 和 Java 中,名称中的 $ 通常表示它在某种程度上被破坏了(尽管它 程序员可以使用的合法字符以及)。