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