メソッド参照は引数が2つあると使えない
JavaGoldの勉強をしていると、ラムダ式を簡略化したメソッド参照というものが現れました。
//List List<String> list = new ArrayList<>(); list.add("ほうじ茶"); list.add("太陽のマテ茶"); list.forEach(System.out::println); // 1 //→引数が1つだけなので有効 list.forEach((k) -> System.out.println(k)); // 2 //Map Map<Integer, String> map = new TreeMap<>(); map.put(1, "一本でも人参"); map.put(2, "レオナルド・堕・ウンチ"); //map.forEach(System.out::println); // 3 //→コンパイルエラー map.forEach((k, v) -> System.out.println(k + v)); // 4
1と2、3と4はそれぞれ同じ処理です。
listではSystem.out.println()に引数kのみを渡しているため、エラーとなりませんが、
mapでは(k, v)と2つの引数を渡しているためコンパイルエラーとなります。