avro工具将联合类型转换为java.lang.Object

avro工具将联合类型转换为java.lang.Object,java,avro,union-types,avro-tools,Java,Avro,Union Types,Avro Tools,此.avprAvro协议文件定义了接收和返回联合类型的单个消息: { “协议”:“Foo”, “类型”:[ {“名称”:“A”,“类型”:“记录”, “字段”:[{“名称”:“x”,“类型”:“int”}]}, {“名称”:“B”,“类型”:“记录”, “字段”:[{“名称”:“y”,“类型”:“双”}]} ], “信息”:{ “酒吧”:{ “请求”:[{“名称”:“a_或b”,“类型”:[“a”,“b”]}], “答复”:[“A”、“B”] } } } 让我们通过avro工具运行它: $ j

.avpr
Avro协议文件定义了接收和返回联合类型的单个消息:

{
“协议”:“Foo”,
“类型”:[
{“名称”:“A”,“类型”:“记录”,
“字段”:[{“名称”:“x”,“类型”:“int”}]},
{“名称”:“B”,“类型”:“记录”,
“字段”:[{“名称”:“y”,“类型”:“双”}]}
],
“信息”:{
“酒吧”:{
“请求”:[{“名称”:“a_或b”,“类型”:[“a”,“b”]}],
“答复”:[“A”、“B”]
}
}
}
让我们通过avro工具运行它:

$ java -jar avro-tools-1.7.7.jar compile protocol test.avpr .
A.java
B.java
并不令人惊讶。但是
Foo.java
看起来是这样的:

/**
*由Avro自动生成
* 
*不要直接编辑
*/
@抑制警告(“全部”)
@org.apache.avro.specific.AvroGenerated
公共接口{
公共静态静态最终org.apache.av罗...公共静态静态静态最终org.阿帕官官官官官官官官官官官官官官官官官官官官官官官官官官网最终公共公共静态静态静态最终org.阿帕官官官官官官官网总总协议协议协议官官官网总总总总总总总总总总总总网,帕帕帕帕帕官官官官官官官网。协议协议。协议解析解析解析(以下以下以下以下以下以下以下以下以下以下“协议:“““““,以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下”协议”协议::::::“以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下以下”为为为为为为”的公共公共公共官官官官官官官官官官官官官官官网总总总总总总总总总总总总总总总总总总总总总总总总总总总总总总请求\“:[{\'name\':\'a\'或\'u b\',\'type\':[\'a\',\'b\']}],\'response\':[\'a\',\'b\']}];
对象栏(java.lang.Object a_或b)抛出org.apache.avro.AvroRemoteException;
@抑制警告(“全部”)
公共接口回调扩展了Foo{
public static final org.apache.avro.Protocol Protocol=Foo.Protocol;
void bar(java.lang.Object a_或b,org.apache.avro.ipc.Callback)抛出java.io.IOException;
}
}
为什么我的
A
-或
B
值会变成
java.lang.Object
?我希望
GenericData
中有一个泛型类型
T。它在这里相关吗?如果相关,我如何使用它