レコードクラスは拡張可能な動作ではなく、不変データのモデル化に焦点を当てています。
equals() やアクセサーなどのデータ駆動型メソッドを自動的かつ暗黙的に実装すれば、ボイラープレートコードを減らすことができます。
ただし、すべてのクラスをレコードクラスに置換できるわけではないことには注意してください。 以下に制限事項の一部を掲載しています:
レコードクラスの詳細な説明については、「Java 言語仕様」を参照してください。
例:
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;
}
}
クイックフィックス適用後:
record Point(int x, int y) {
}
「アクセサーメソッドの名前変更を提案する」オプションを有効にすると、 getX() / isX() アクセサーの名前が自動的に x() へ変更されます。
「メンバーのアクセス修飾子が緩くなった場合はハイライトを無効にする」オプションを使用すると、メンバーのアクセス修飾子が変換によって緩くなるクラスが除外されます。 クイックフィックスは引き続きインテンションとして使用できます。そのインテンションを呼び出すと影響を受けるメンバーが表示され、確認を求められます。 バッチモードでは変換は提案されません。
指定のパターンに一致するアノテーションがある場合にクラスを変換対象外にするには、「クラスに次のアノテーションがある場合は変換を抑止する」リストを使用してください。
2020.3 の新機能です