Reports classes that can be converted record classes.

Record classes focus on modeling immutable data rather than extensible behavior. Automatic implicit implementation of data-driven methods, such as equals() and accessors, helps to reduce boilerplate code.

Note that not every class can be a record class. Here are some of the restrictions:

For a full description of record classes, refer to the Java Language Specification.

Example:


  class Point {
    private final double x;
    private final double y;

    Point(double x, double y) {
      this.x = x;
      this.y = y;
    }

    double getX() {
      return x;
    }

    double getY() {
      return y;
    }
  }

After the quick-fix is applied:


  record Point(int x, int y) {
  }

Enable the Suggest renaming accessor methods option to rename getX()/isX() accessors to x() automatically.

Use the If members become more accessible option to specify what to do when conversion will make members more accessible:

Use the Suppress conversion if class is annotated by list to exclude classes from conversion when annotated by annotations matching the specified patterns.

New in 2020.3