@Target({METHOD,FIELD}) @Retention(SOURCE) public @interface Serial
注釈付きのフィールドまたはメソッドが、「Javaオブジェクト直列化仕様」で定義された「直列化メカニズム」の一部であることを示します。 この注釈型は、
Override
注釈型で有効化されているチェックと似た、直列化関連宣言のコンパイル時チェックを可能にし、メソッドのオーバーライドを検証することを目的としています。 Serializable
クラスでは、コンパイラが誤解を招くような直列化関連のフィールドやメソッド、その他の理由で検出が難しいような誤解を招く、@Serial
注釈の使用が推奨されます。
具体的には、この型の注釈は、Serializable
として宣言されたクラス内の直列化関連メソッドおよびフィールドに適用されます。 5つの直列化関連メソッドは次のとおりです:
private void writeObject(java.io.ObjectOutputStream stream) throws IOException
private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException
private void readObjectNoData() throws ObjectStreamException
- ANY-ACCESS-MODIFIER
Object writeReplace() throws ObjectStreamException
- ANY-ACCESS-MODIFIER
Object readResolve() throws ObjectStreamException
private static final ObjectStreamField[] serialPersistentFields
private static final long serialVersionUID
@Serial
注釈の付いたメソッドまたはフィールドが、意味のあるコンテキストで宣言されている定義済の直列化関連のメソッドまたはフィールドのいずれかであることを検証し、そうでない場合は警告を発行することをお薦めします。
この注釈を他のフィールドまたはメソッドに適用する場合は、次のような意味上のエラーになります:
Serializable
以外のクラスのフィールドまたはメソッド- 適切な構造宣言のフィールドまたはメソッド、ただし無効な型のフィールドまたはメソッド。 たとえば、
enum
タイプは0L
のserialVersionUID
を持つように定義されているため、enum
タイプで宣言されたserialVersionUID
フィールドは無視されます。 同様に、上で識別された5つの直列化関連のメソッドは、enum
タイプに対して無視されます。 Externalizable
クラス内の場合:-
writeObject
、readObject
およびreadObjectNoData
のメソッド宣言 serialPersistentFields
のフィールド宣言
Externalizable
インタフェースはSerializable
を拡張しますが、3つのメソッドと上の1つのフィールドは外部化可能なクラスには使用されません。-
Serializable
クラスで使用されていないフィールドとメソッドが表示される場合があります。- 導入されたバージョン:
- 14
- 関連項目:
Serializable
,Externalizable