如何序列化Avro生成的Java POJO

如何序列化Avro生成的Java POJO,java,serialization,avro,Java,Serialization,Avro,我正在尝试为Avro生成的Java对象编写一个通用序列化程序。通过乞讨、借贷和偷窃,我想出了以下方法: public byte[] serialize(T data) { SpecificDatumWriter<T> writer = new SpecificDatumWriter<>(tClass); ByteArrayOutputStream out = new ByteArrayOutputStream(); BinaryEncoder en

我正在尝试为Avro生成的Java对象编写一个通用序列化程序。通过乞讨、借贷和偷窃,我想出了以下方法:

public byte[] serialize(T data) {
    SpecificDatumWriter<T> writer = new SpecificDatumWriter<>(tClass);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(out, null);
    try {
        writer.write(data, encoder);
        encoder.flush();
        ByteBuffer serialized = ByteBuffer.allocate(out.toByteArray().length);
        serialized.put(out.toByteArray());
        return serialized.array();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
我错过什么了吗

public org.apache.avro.Schema getSchema() {
    return SCHEMA$;
}

private static final org.apache.avro.io.DatumWriter WRITER$ = new org.apache.avro.specific.SpecificDatumWriter(SCHEMA$);

@Override
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException {
    WRITER$.write(this, SpecificData.getEncoder(out));
}

private static final org.apache.avro.io.DatumReader READER$ = new org.apache.avro.specific.SpecificDatumReader(SCHEMA$);

@Override
public void readExternal(java.io.ObjectInput in) throws java.io.IOException {
    READER$.read(this, SpecificData.getDecoder(in));
}