$show=/label

Java 14 @Serial Annotation

SHARE:

A quick guide to @Serial annotation in java 14 and this annotation should be applied on only in Serializable context.

1. Introduction


In this tutorial, we will learn a new annotation @Serial introduced in Java 14. This annotation is similar to the @Override annotation, @Serial annotation is used in combination with the serial lint flag to perform compile-time checks for the serialization-related members of a class.


Already this feature is available in build 25.

Java 14 @Serial Annotation



2. Usage and Example


Let us create an example program on @Serial annotation. This should be used as part of the fields and methods in Serialization.

public class ProductSerial implements Serializable {
 
    @Serial
    private static final ObjectStreamField[] serialPersistentFields = null;
     
    @Serial
    private static final long serialVersionUID = 1;
     
    @Serial
    private void writeObject(ObjectOutputStream stream) throws IOException {
        // ...
    }
     
    @Serial
    private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
        // ...
    }
 
    @Serial
    private void readObjectNoData() throws ObjectStreamException {
        // ...
    }
 
    @Serial
    private Object writeReplace() throws ObjectStreamException {
        // ...
        return null;
    }
 
    @Serial
    private Object readResolve() throws ObjectStreamException {
        // ...
        return null;
    }
 
}

Once, creating a new class then we need to compile using a serial lint flag.

javac -Xlint:serial ProductSerial.java

3. Ineffective and compile-time error places


This is legal to use in serialization. Let us see what is its behavior in normal classes and enum.

The lint compiler will check for the annotated member signatures and types. If do not match then it will throw compile-time errors.

3.1 If any class not implementing Serializable interface


public class NotSerializeClass {

    @Serial 
    private static final long serialVersionUID = 1; // Compilation error
 
}

Reason: class NotSerializeClass is not implemented Serializable interface.

3.2 In Enums


public enum MyEnum { 
    @Serial
    private void readObjectNoData() throws ObjectStreamException {} // Compilation error 
}

This is also an ineffective way to use in Enums

3.3 Using Externalizable Interface


Apart from the Serializable interface, java api provided another way using Externalizable interface.



public class MyExternalizableClass implements Externalizable {
    @Serial
    private void writeObject(ObjectOutputStream stream) throws IOException {} // Compilation error 
}

To writeObject(), readObject(), readObjectNoData() and serial Persistent Fields in an Externalizable since those classes use different serialization methods.


4. Conclusion


In this article, we have seen how to use new @Serial annotation and good guidelines. What are the illegal places to not use this annotation?

Note: Just remember, this annotation should be applied only in Serializable context.



COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,16,Arrays,7,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,5,Collections,22,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,81,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,4,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,29,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,Java 8,66,Java 8 Difference,2,Java 8 Stream Conversions,2,java 8 Stream Examples,3,Java 9,1,Java Conversions,11,Java Design Patterns,1,Java Files,1,Java Program,2,Java Programs,65,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Conversions,3,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Logging,1,Mac OS,2,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,21,String,58,String Programs,9,String Revese,1,Swing,1,System,1,Tags,1,Threads,10,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java 14 @Serial Annotation
Java 14 @Serial Annotation
A quick guide to @Serial annotation in java 14 and this annotation should be applied on only in Serializable context.
https://1.bp.blogspot.com/-vCPFNazRdAY/XhTLRbQgDjI/AAAAAAAACLA/KqNXKnLQm8kKyqeSfNvGlPtSItdnbusBACLcBGAsYHQ/s640/Java%2B14%2B%2540Serial%2BAnnotation%2B.png
https://1.bp.blogspot.com/-vCPFNazRdAY/XhTLRbQgDjI/AAAAAAAACLA/KqNXKnLQm8kKyqeSfNvGlPtSItdnbusBACLcBGAsYHQ/s72-c/Java%2B14%2B%2540Serial%2BAnnotation%2B.png
JavaProgramTo.com
https://www.javaprogramto.com/2020/01/java-14-serial-annotation.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2020/01/java-14-serial-annotation.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content