gpt4 book ai didi

java - 在 Apache Avro 中定义常量

转载 作者:行者123 更新时间:2023-11-30 02:49:11 26 4
gpt4 key购买 nike

如何在 Apache Avro 中定义 Java 常量字段?

示例

public static final String FIELD = "field";

最佳答案

简短的回答是:你不知道。 Avro 是一个序列化系统;因此,要理解为什么静态字段不被序列化,我们可以超越 Avro,看看一般的序列化。以下是 SO 提供的一些资源。

为了证明 Avro 不会序列化静态字段,我们可以使用 ReflectData 生成架构。

import org.apache.avro.Schema;
import org.apache.avro.reflect.ReflectData;

public class Main {
public static void main(String... args) {
Schema schema = ReflectData.get().getSchema(Main.Foo.class);
System.out.println(schema);
}

static class Foo {
public static final String FIELD = "field";
}
}

输出为:{"type":"record","name":"Foo","namespace":"thepackage.Main$","fields":[]}
注意空的字段数组。

如果字段上没有 static 修饰符,架构将变为:

{"type":"record","name":"Foo","namespace":"thepackage.Main$","fields":[{"name":"FIELD","type":"string"}]}

上面的链接解释了为什么序列化静态字段是不必要且不可取的,但我想您可以使用单元素枚举实现相同的效果。

关于java - 在 Apache Avro 中定义常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39254340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com