Reports methods and fields in Serializable and Externalizable classes that are not suitable to be annotated with the java.io.Serial annotation.

Examples:

class Test implements Serializable {
  @Serial //The annotated field is not a part of serialization mechanism as it's not final
  private static long serialVersionUID = 7874493593505141603L;

  @Serial //The annotated method is not a part of the serialization mechanism as it's not private
  void writeObject(ObjectOutputStream out) throws IOException {
  }
}
class Test implements Externalizable {
  @Serial //The annotated method is not a part of the serialization mechanism as it's inside Externalizable class
  private void writeObject(ObjectOutputStream out) throws IOException {
  }
}

To get more information about all valid cases, refer the documentation for java.io.Serial.

This inspection only reports if the language level of the project or module is 14 or higher.

New in 2020.3