小さいときに童謡のレコードを聴いたことがあったような。なかったような。
 なんかミニコンポについてたよーな気がしないでもないw
レコードクラスを使うサンプル
レコードクラスを作成。リストに追加します。
 追加したリストから、レコード内のデータを出力します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import java.util.ArrayList; import java.util.List; public class RecordTest {     public static void main(String[] args) {         //レコードのリストを作成         List<KeyValueRecourd> list = new ArrayList<KeyValueRecourd>();         list.add(new KeyValueRecourd("01",100));         list.add(new KeyValueRecourd("02",200));         list.add(new KeyValueRecourd("03",300));         //全レコードを標準出力         System.out.println("--全レコードを標準出力--");         list.forEach(System.out::println);         //全レコードの値を合計         System.out.println("--全レコードを合計--");         System.out.println(list.stream().mapToInt(t -> t.value()).sum());         //レコードの値をすべて2乗         System.out.println("--全レコードを2乗--");         list.stream().mapToInt(t -> t.pow()).forEach(System.out::println);     } } record KeyValueRecourd(String key,int value) {     private static final int SQUARE = 2;     public int pow() {         //valueの2乗値を返す         return (int)Math.pow(value, SQUARE);     } } | 
実行結果
| 1 2 3 4 5 6 7 8 9 10 | --全レコードを標準出力-- KeyValueRecourd[key=01, value=100] KeyValueRecourd[key=02, value=200] KeyValueRecourd[key=03, value=300] --全レコードを合計-- 600 --全レコードを2乗-- 10000 40000 90000 | 
サンプルの解説
classの代わりにrecordを指定すると、レコードクラスが作成できます。
 レコードクラスの引数に、フィールド変数を指定します。この例ではkey,valueの2つです。
 これがフィールド変数になるので、同じ変数名は指定できません。
 また、ふつうのクラスと同じようにメソッド、staticのフィールド変数を追加で書くことができます。
レコードクラスの特徴は、こんな感じ。
- レコードクラスは、final扱い。abstractは不可。
- 格納するフィールド変数に応じた、equals,hashcode,toStringメソッドが自動的に作成される。
- 作成するレコードクラスは、java.lang.Recordが継承される。
- イミュータブルが強制される。つまり、後から値の変更は不可。
なお、レコードクラスは、Java16より使えますが、LTSを考えると実質Java17以降で使えるって感じですかねー。












