2017-10-27 3 views
0

の作品、私はorg.json4s.JsonAST.JValue、 を取得したいが、実際にそれがorg.json4s.JsonAST $ JValueを返し、それは奇妙です!classTag[JValue]を使用します$の理由は何ですか? 私は新しい男がスカラーを使用している、誰かが私に答えることができますか?ありがとうございます。json4s JValue ScalaのclassTagは私のコードでは、間違った

答えて

0

クラス/メソッド/ etcを参照するために使用する名前です。あなたのコードでは、コンパイラによって生成されたバイトコードにある名前は同じである必要はありません。 ScalaコンパイラはJavaコンパイラよりも名前の変更が必要ですが、この特定のケースは両方とも同じです。

なぜなら、内部クラスは実際にはJVM上に存在しないからです。それは、外部インスタンスを含む追加のフィールドを持つ通常のクラスです。クラスのJVM名は<outer_class>$<inner_class>のようになります。スカラ座とJavaで

(それプログラマが、同様に使用するための法的な性格であるが)、名前に$は、一般的に、それが何らかの形で台無しだ示します。

+0

ありがとうございます!私はおそらく原因を得ると思うが、私はこの状況で欲しいものは、** $ **ではない通常のclassTagを得ることである。もう一度ありがとう –

+0

これは通常の 'ClassTag'(または' toString'で印刷された方法)です。あなたが望む形式で_name_クラスを望むならば、 'replace(" $ "、"。 ")'がこのケースで動作します。すべての名前のmanglingを扱うことはもっと難しいでしょう。 –

+0

ありがとう、あなたが 'replace(" $ "、"。 ")'を使って言うのと同じことをしているのですが、それは本当にあまり良いことではありません。 –

関連する問題