Apache Avro只会生成公共属性,这是因为Avro仅支持Java接口的序列化和反序列化。以下是一个示例代码,演示了如何使用Avro生成只包含公共属性的类:
import org.apache.avro.Schema;
import org.apache.avro.reflect.ReflectData;
import org.apache.avro.specific.SpecificData;
public class AvroExample {
public static void main(String[] args) {
// 定义一个包含公共属性的类
public class Person {
public String name;
public int age;
}
// 使用 Avro 生成相应的 Avro Schema
Schema schema = ReflectData.get().getSchema(Person.class);
// 打印生成的 Avro Schema
System.out.println(schema.toString(true));
}
}
在上面的示例中,我们定义了一个包含公共属性的Person类。然后,我们使用Avro的ReflectData类获取Person类的Schema,并将其打印出来。输出结果应为:
{
"type" : "record",
"name" : "Person",
"fields" : [ {
"name" : "name",
"type" : "string"
}, {
"name" : "age",
"type" : "int"
} ]
}
可以看到,在生成的Avro Schema中,只包含了公共属性name和age。