18

Java Annotation インターフェイスは拡張されませんSerializable。ただし、Java アノテーション値はシリアライズ可能です (java.lang.reflect.Proxyシリアライズ可能な呼び出しハンドラを使用して実装されます)。

これはどこでも保証されていますか?検索 foo が参照を見つけられません。または、アノテーション インスタンスを安全にシリアライズする必要がある場合、独自のシリアライゼーション プロキシを作成する必要がありますか?

4

2 に答える 2

12

のメソッドによって返される注釈オブジェクトjava.lang.reflect.AnnotatedElementSerializable. これはAPIが言うことです:このインターフェースは注釈を反射的に読むことを可能にします。このインターフェイスのメソッドによって返されるすべての注釈は、不変でシリアライズ可能です。

注釈オブジェクトを返すことができるすべてのクラス (Class、Constructor、Field、Method、Package、Parameter) は AnnotatedElement を実装し、上記の契約によって Serializable オブジェクトを作成/返すことが義務付けられています。

于 2013-04-09T14:46:33.857 に答える
10

注釈はクラス定義の一部であるため、注釈を持つクラスのインスタンスをシリアル化するときに、(少なくとも標準の Java シリアル化では) シリアル化ストリームに書き込まれることはありません。

更新:実際の注釈のインスタンスを具体的にシリアル化することに言及していた元の質問のポイントを見逃したと思います。

于 2013-04-09T14:38:34.543 に答える