2014-02-27 3 views
1

저는 Kryo IO를 직접 사용하여 저수준의 String, Longs 및 Doubles의 프리미티브 직렬화를 수행합니다.Kryo 직렬화 유형 감지

Kryo IO가 다시 읽을 때 직렬화 된 바이트에서 원시 데이터 형식을 자동으로 검색하는 방법이 있다면 궁금합니다.

문자열 배열에 10 개의 직렬화 된 값이 있는데 String, Long 또는 Doubles인지 여부를 알 수 없습니다. Kryo가 MsgPack과 같은 데이터 유형을 결정할 수있는 방법이 있습니까?

답변

2

Kryo은 이와 관련하여 일반적인 Java 직렬화와 다를 바 없습니다. 이 디시리얼라이저가 각각의 시간을 직렬화 복원되는 유형을 알 수있는 두 가지 방법이 있습니다 : 그것은 알려진 클래스의 필드

  1. , 그래서 디시리얼라이저 구현은 적절한 순서로 각 필드를 읽습니다.

  2. 스트림에 유형 정보가 포함되어있어이를 알 수 있습니다. KryowriteClassAndObject() 메서드는이를 수행합니다. 실제 객체 내용에 컴팩트 클래스 식별자가 붙어서 디시리얼라이저가 수행 할 작업을 알립니다.

    또는 이와 같이 수동으로 수행 할 수도 있습니다. 예 : 제한된 수의 지원되는 유형 중에서 선택하는 단일 바이트를 전송합니다.

게다가, 이것은 MessagePack 형식 의무뿐만 아니라 ...

+0

난 그냥 MsgPack에서 Kryo 내 직렬화를 포팅 하루 동안 것입니다. Kryo는 신선한 공기의 숨결과 같습니다! – Kong

관련 문제