@Target({METHOD,FIELD}) @Retention(SOURCE) public @interface Serial
Indicates that an annotated field or method is part of the serialization mechanism defined by the
Java Object Serialization Specification. This
annotation type is intended to allow compile-time checking of
serialization-related declarations, analogous to the checking
enabled by the
Override annotation type to
validate method overriding. Serializable classes are encouraged to
use @Serial annotations to help a compiler catch
mis-declared serialization-related fields and methods,
mis-declarations that may otherwise be difficult to detect.
Specifically, annotations of this type should be
applied to serialization-related methods and fields in classes
declared to be Serializable. The five serialization-related
methods are:
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 annotation is one of the defined serialization-related
methods or fields declared in a meaningful context and issue a warning
if that is not the case.
It is a semantic error to apply this annotation to other fields or methods, including:
- fields or methods in a class that is not
Serializable - fields or methods of the proper structural declaration, but in
a type where they are ineffectual. For example,
enumtypes are defined to have aserialVersionUIDof0Lso aserialVersionUIDfield declared in anenumtype is ignored. The five serialization-related methods identified above are likewise ignored for anenumtype. - in a class that is
Externalizable:- method declarations of
writeObject,readObject, andreadObjectNoData - a field declaration for
serialPersistentFields
Externalizableinterface extendsSerializable, the three methods and one field above are not used for externalizable classes. - method declarations of
Serializable class.- Since:
- 14
- See Also:
Serializable,Externalizable