我有两种类型的AvroRecords,它们都扩展了avro.SpecificRecord.有没有办法让一个人成为另一个Java的子类?其中一个是PersonRecord,我希望它的子类是EmployeeRecord.我不想用avro数据填充普通Java类的原因是我使用hadoop并且如果可能的话希望直接使用avro文件.
为了澄清,我感兴趣的是多态性.我希望能够使用一个函数,将PersonRecord作为参数与EmployeeRecord.
谢谢!
我想我明白你要做什么("Avro Schema定义文件中的Avro记录的子类"),但我不认为这是可能的.
相反,一种方法是将EmployeeRecord
一个PersonRecord
成员嵌套在其中,然后是以下与Employee特定相关的信息.例如 :
{ "type": "record", "name": "PersonRecord", "namespace": "com.yourapp", "fields": [ { "name": "first", "type": "string" }, { etc... } ] } { "type": "record", "name": "EmployeeRecord", "namespace": "com.yourapp", "fields": [ { "name": "PersonInfo", "type": "PersonRecord" }, { "name": "salary", "type": "int" }, { etc... } ] }