【问题标题】:json4s JValue scala classTag works wrongjson4s JValue scala classTag 工作错误
【发布时间】:2017-10-27 03:16:32
【问题描述】:

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

【问题讨论】:

    标签: scala json4s classtag


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢您的回答!我想我可能明白了原因,但在这种情况下我想要的是获得正常的 classTag 而不是 $,有没有办法解决或避免它?再次感谢
    • 普通的ClassTag(或者更确切地说是用toString打印的方式)。如果您希望类 name 采用您想要的形式,replace("$", ".") 将适用于这种情况。处理所有名称修改会更加困难。
    • 谢谢,我所做的和你说的一样使用replace("$", "."),但不是很好,无论如何谢谢你的回答
    猜你喜欢
    • 2017-10-02
    • 2022-01-26
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多