Suggests replacing classes with records.

The inspection can be useful if you need to focus on modeling immutable data rather than extensible behavior. Automatic implementation of data-driven methods, such as equals and accessors, helps to get rid of boilerplate.

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

To get a full list of the restrictions, refer to the Oracle documentation.

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;
    }
  }

This record will be converted to:


  record Point(int x, int y) {
  }

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

New in 2020.3