Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的代码中,我classTag[JValue]想获取org.json4s.JsonAST.JValue,但实际上它返回org.json4s.JsonAST$JValue,这很奇怪!为什么有$?我是使用scala的新手,有人可以回答我吗?多谢
classTag[JValue]
您用来指代类/方法/等的名称。在您的代码中,它在编译器生成的字节码中的名称不必相同。Scala 编译器需要比 Java 编译器更多地进行这种名称修饰,但是这种特定情况对于两者都是相同的。
原因是内部类在 JVM 上并不真正存在:它们是普通类,具有包含外部实例的附加字段。类的 JVM 名称如下所示<outer_class>$<inner_class>。
<outer_class>$<inner_class>
在 Scala 和 Java中,$名称通常表明它以某种方式被破坏(尽管它也是程序员使用的合法字符)。
$