이 검사는 이 레코드에 빠른 수정을 적용하여 Java 레코드를 이전 Java 버전을 사용하는 코드 베이스로 이동 가능하게 합니다.
참고로, 결과로 얻어진 클래스는 기존 레코드와 완전히 똑같지는 않습니다.
java.lang.Record를 확장하지 않으므로, instanceof Record는 false를 반환합니다.Class.isRecord() 및 Class.getRecordComponents()와 같은 리플렉션 메서드가 다른 결과를 생성합니다.hashCode() 구현은 다른 결과를 생성할 수 있습니다. 왜냐하면 레코드의 hashCode를 계산하는 식이 의도적으로 지정되지 않았기 때문입니다.예:
record Point(int x, int y) {}
빠른 수정을 적용한 후:
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 + ']';
}
}
2020.3의 새로운 기능