ダイヤモンド型推論で型推論機構自体はもっていた • ローカル変数は寿命が短いので型がなくても理解できる ArrayList<String> strs = new ArrayList<>(); ArrayList<String> strs = new ArrayList<String>(); var strs = new ArrayList<String>();
パターンマッチングで値の分解 • switch • パターンマッチングによる分岐 record MyRecord(String s, int n) {} var a = switch(o) { case String s -> s.length(); case MyRecord(_, var n) -> n; default -> 0; }
record Value(boolean a, byte b){} • boolean(2通り) x byte(256通り)で512通りの値を保持 • sealed class • 直和型: 型の足し算 • sealed interface Value { record BooleanValue(boolean v) {} record ByteValue(byte v) {} } • boolean(2通り) + byte(256通り)で258通りの値を保持