クリオシリアライゼーションタイプの検出
-
24-12-2019 - |
質問
私はKryo Ioを直接使って文字列、longs、およびdoublesの私自身の低レベルのプリミティブシリアル化を行います。
私が疑問に思うのは、Kryo IOがそれらを読むときに直列化されたバイトから自動的に基本的なデータ型を自動的に検出する方法がある場合は何ですか?
私が10のシリアル化された値のバイト配列を持っているなら、そして私は彼らが文字列、longs、またはdoubleのかどうかわかりません。Kryoがデータ型を判断する方法はありますか(MSGPACK CAN)?
解決
Kryo
は、この点で通常のJavaシリアル化とは異なります。デシリアライザが毎回逆シリアル化するタイプを知ることができる2つの方法があります。
-
それは既知のクラスのフィールドであるため、デシリアライザの実装は各フィールドを正しい順序で読み込みます。
-
それを知らせるために何らかの方法でストリームに埋め込まれたタイプ情報がある。
writeClassAndObject()
のKryo
メソッドは、それを実際のオブジェクトコンテンツに事前に説明し、デシリアライザに何をすべきかを知らせます。あるいは、あなたは手動でこのようなものをすることができます。限られた数のサポートされているタイプの中から選択する1バイトを送信することによって。
その上、これは MessagePack
フォーマット義務を義務とするものです...
所属していません StackOverflow