我正在为具有枚举字段的 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/