java - 使用 Avro java api 动态插入枚举符号

标签 java api schema avro

我正在为具有枚举字段的 java 类编写架构。我正在使用 java 模式生成器,如下所示:

public Schema schema = SchemaBuilder
    .record("MyRecord").namespace("my.name.space")
    .name("myEnum").type().enumeration("MyEnumClass").namespace("enum.name.space")
        .symbols("S1", ..., "S1000").noDefault()
    .endRecord()

问题是 MyEnumClass 中有数百个 Enum 值。可以从我的代码访问该类。如何将它们动态插入到 .symbles() 中而无需手动输入?

最佳答案

您可以自动为您的类创建 avro 架构。

例如。

枚举:

public enum TestEnum {
    VAL1,
    VAL2,
    VAL3
}

带有枚举字段的类:

public class TestClass {
    public TestEnum testEnum;

    public TestClass() {

    }

    public TestClass(TestEnum testEnum) {
        this.testEnum = testEnum;
    }

    public TestEnum getTestEnum() {
        return testEnum;
    }

    public void setTestEnum(TestEnum testEnum) {
        this.testEnum = testEnum;
    }
}

生成架构:

Schema schema = ReflectData.get().getSchema(TestClass.class);

结果:

{
  "type": "record",
  "name": "TestClass",
  "namespace": "q42698247",
  "fields": [
    {
      "name": "testEnum",
      "type": {
        "type": "enum",
        "name": "TestEnum",
        "symbols": [
          "VAL1",
          "VAL2",
          "VAL3"
        ]
      }
    }
  ]
}

关于java - 使用 Avro java api 动态插入枚举符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42698247/

相关文章:

java - Kindle-我可以从kindle paperwhite中获取数据吗?

java - Spring向数据库添加数据,BindingResult结果有Errors

java - 无法将 Java Swing GUI 可见性设置为 true

java - 如何从xmi文件生成时序图

oracle - 让用户访问 Oracle 中其他模式的正确方法

php - 在 MongoDB 中跟踪独特的网页浏览量和独特的访问者

java - Schemacrawler 忽略无法访问的 schema

java - 在java中绘制极坐标图

java - 主要java.lang.RuntimeException : Unable to start activity ComponentInfo

php - 使用 Mandrill API 发送邮件时被拒绝