Java 注释是可序列化的吗?

2022-09-02 21:34:51

Java 注释 接口不扩展 。但是,Java 注释值是可序列化的(使用 具有可序列化的调用处理程序实现)。Serializablejava.lang.reflect.Proxy

这在任何地方都能得到保证吗?我的搜索 foo 找不到引用。或者,如果我需要安全地序列化注释实例,我是否需要创建自己的序列化代理?


答案 1

的方法返回的批注对象是 。这就是API所说的这个接口允许以反思的方式阅读注释。此接口中的方法返回的所有注释都是不可变和可序列化的java.lang.reflect.AnnotatedElementSerializable

所有能够返回注释对象的类(类,构造函数,字段,方法,包,参数)都实现AnnotatedElement,并且有义务通过上述协定创建/返回可序列化对象。


答案 2

注释是类定义的一部分,因此在序列化具有注释的类的实例时,永远不会写入序列化流(至少不会使用标准java序列化)。

更新:我想我错过了原始问题的重点,它指的是专门序列化实际注释的实例。