2013-02-14 3 views
9

Javaでオブジェクトをシリアル化すると、文字Jは次のバイトがlongを表し、文字LはObjectが次にあることを示すために使用されますが、それはなぜですか?なぜObjectにOを使用し、longにLを使用しないのですか?Javaのシリアライゼーションでは、Jは長いことを意味し、Lはオブジェクトを意味するのはなぜですか?

+1

Oが0と混同されている可能性がありますか? – Adam

+3

「それは仕様書が書かれた方法です」とは別に、私は実際の理由を見て驚くでしょう –

+2

Jは私の後に来て、私はintなので、Jは長くなるでしょう。 Lがどこにあるのかはっきりしていませんが、コンピュータが蒸気で駆動されていた歴史の霧に戻ります。 (実際には、このスレッドは技術的には "本当の質問ではない"という基準に厳密にはまっていますが、やはり面白いです) –

答えて

5

これらの文字は、競合のために確かに選択されました。それの当て推量競合:

  • Cチャーために採取しました。そこで、をクラスに使用しました。

  • は、クラスとした。だから、彼らはとし、長さをとした。

  • は、バイトとした。だから、彼らはブールのためにZを使った。ところで

、 'Lは' 'オブジェクト' が、 '完全修飾クラス' を意味するものではありません。

+4

私はそれがまさに理論的根拠であるかどうかはわかりませんが、(それはスクラブルバッグから手紙を選んだという考え方のように)それはもっともらしいです。 –

+3

あなたはこの声明の出所を持っていますか、それともちょうど推測ですか? – EJP

+0

はい。それは単なる推測です!もし私がソースを見つけたら、ここに置いておきます。 –

関連する問題