This inspection makes it possible to move a Java record to a codebase using an earlier Java version by applying the quick-fix to this record.
Note that the resulting class is not completely equivalent to the original record:
java.lang.Record
,
so instanceof Record
returns false
.Class.isRecord()
and
Class.getRecordComponents()
produce different results.hashCode()
implementation may produce a different result
because the formula to calculate record hashCode
is deliberately not specified.Example:
record Point(int x, int y) {}
After the quick-fix is applied:
final class Point {
private final int x;
private final int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
public int x() { return x; }
public int y() { return y; }
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null || obj.getClass() != this.getClass()) return false;
var that = (Point)obj;
return this.x == that.x &&
this.y == that.y;
}
@Override
public int hashCode() {
return Objects.hash(x, y);
}
@Override
public String toString() {
return "Point[" +
"x=" + x + ", " +
"y=" + y + ']';
}
}
New in 2020.3