0

在我的代码中,我classTag[JValue]想获取org.json4s.JsonAST.JValue,但实际上它返回org.json4s.JsonAST$JValue,这很奇怪!为什么有$?我是使用scala的新手,有人可以回答我吗?多谢

4

1 回答 1

0

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

原因是内部类在 JVM 上并不真正存在:它们是普通类,具有包含外部实例的附加字段。类的 JVM 名称如下所示<outer_class>$<inner_class>

在 Scala 和 Java中,$名称通常表明它以某种方式被破坏(尽管它也是程序员使用的合法字符)。

于 2017-10-27T05:35:18.230 回答