我有一个模式 A 的 GenericRecord 对象,它也是生成的 Avro Java 类。我是否可以以某种方式将该对象转换为实际的 A 类型?
您可以将 Avro 转换GenericRecord为SpecificRecord使用deepCopy. 例如,如果“Foo”是特定记录:
Foo foo = (Foo) SpecificData.get().deepCopy(genericRecord.getSchema(), genericRecord)
Run Code Online (Sandbox Code Playgroud)
这假设SpecificRecord与传递的模式相对应的类可用于 Avro。
请注意,这种方法不支持模式演化:只有一个模式传递给 ,deepCopy并且它用于读取和写入。这意味着字段是根据其位置复制的,因此SpecificRecord架构必须与GenericRecord架构完全匹配。
| 归档时间: |
|
| 查看次数: |
7796 次 |
| 最近记录: |