Ты не.
Вместо этого вы создаете экземпляр (самого внешнего) объекта, который хотите десериализовать.
Из-за того, как работает Thrift, в сценариях RPC эта информация обычно неявно известна и поэтому не сериализуется.Итак, для целей сериализации вы должны знать, что это за тип, с помощью вашего собственного кода.
Поскольку это может легко стать кошмаром, если задействованы несколько типов «записей данных», такой подход заключается в следующемоказался очень удобным (и расширяемым):
union Outer {
1: MyCoolClass cool;
2: SomeOtherData other;
3: Foobar foobar;
// can be extended with other types as needed
}
Используя эту конструкцию для сериализации и десериализации, вы знаете, что экземпляр для чтения / записи всегда равен Outer
.