avro-tools превращает типы объединения в java.lang.Object

Это .avpr Файл протокола Avro определяет одно сообщение, получающее и возвращающее тип объединения:

{
  "protocol": "Foo",
  "types": [
    {"name": "A", "type": "record",
     "fields": [{"name": "x", "type": "int"}]},
    {"name": "B", "type": "record",
     "fields": [{"name": "y", "type": "double"}]}
  ],
  "messages": {
    "bar": {
      "request": [{"name": "a_or_b", "type": ["A", "B"]}],
      "response": ["A", "B"]
    }
  }
}

Давайте пройдем через это avro-tools:

$ java -jar avro-tools-1.7.7.jar compile protocol test.avpr .

A.java а также B.java не удивительно Но Foo.java выглядит так:

/**
 * Autogenerated by Avro
 * 
 * DO NOT EDIT DIRECTLY
 */

@SuppressWarnings("all")
@org.apache.avro.specific.AvroGenerated
public interface Foo {
  public static final org.apache.avro.Protocol PROTOCOL = org.apache.avro.Protocol.parse("{\"protocol\":\"Foo\",\"namespace\":null,\"types\":[{\"type\":\"record\",\"name\":\"A\",\"fields\":[{\"name\":\"x\",\"type\":\"int\"}]},{\"type\":\"record\",\"name\":\"B\",\"fields\":[{\"name\":\"y\",\"type\":\"double\"}]}],\"messages\":{\"bar\":{\"request\":[{\"name\":\"a_or_b\",\"type\":[\"A\",\"B\"]}],\"response\":[\"A\",\"B\"]}}}");
  java.lang.Object bar(java.lang.Object a_or_b) throws org.apache.avro.AvroRemoteException;

  @SuppressWarnings("all")
  public interface Callback extends Foo {
    public static final org.apache.avro.Protocol PROTOCOL = Foo.PROTOCOL;
    void bar(java.lang.Object a_or_b, org.apache.avro.ipc.Callback<java.lang.Object> callback) throws java.io.IOException;
  }
}

Почему мой A -или же- B значения превращаются в java.lang.Object? Я ожидал бы универсальный тип T<A, B> у него есть полезные методы для создания и проверки моих значений типа union.

Что мне делать с Object Я получаю аргумент, чтобы различать A а также B типы, а какое значение я должен вернуть?

Погуглив, я нашел метод под названием resolveUnion в GenericData, Это уместно здесь? Если да, то как мне его использовать?

0 ответов

Другие вопросы по тегам