我有两种类型的avrorecords都扩展了avro.specificrecord。有没有一种方法可以在java中使一个成为另一个的子类?其中一个是personrecord,我想成为它的子类的是employeerecord。我不想用avro数据填充普通java类的原因是我正在使用hadoop,如果可能的话,我希望直接使用avro文件。澄清一下,我感兴趣的是多态性。我想能够使用一个函数,作为参数的personrecord与employeerecord。谢谢!
ie3xauqp1#
我想我明白你想做什么(在avro模式定义文件中“子类化”avro记录),但我认为这是不可能的。相反,这样做的一个方法是 EmployeeRecord 有一个 PersonRecord 成员嵌套在其中,然后是特定于员工的相关信息。例如:
EmployeeRecord
PersonRecord
{ "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... } ] }
1条答案
按热度按时间ie3xauqp1#
我想我明白你想做什么(在avro模式定义文件中“子类化”avro记录),但我认为这是不可能的。
相反,这样做的一个方法是
EmployeeRecord
有一个PersonRecord
成员嵌套在其中,然后是特定于员工的相关信息。例如: