s -> s + 10
のように要素に10
を足して返すというような関数を即時実行できるのがラムダ式であり、のときの関数はSAMインターフェースであることが条件だと覚えていたのですが
Java
1students.stream() 2 .filter(s -> s.getAge() < 30) 3 .forEach(s -> System.out.println(s.getName()));
例えば上のコードのように30歳未満という条件にしぼり、その名前を出力するという場合になぜ利用できるのかがわかりません。students
は自作クラスで内容は以下のようにシンプルです。
Java
1class Student { 2 private String name; 3 private int age; 4 5 public Student(String name, int age) { 6 this.name = name; 7 this.age = age; 8 } 9 10 public int getAge() { 11 return age; 12 } 13 14 public String getName() { 15 return name; 16 }
StudentクラスはSAMインターフェースではありません。ここで混乱しています。
わからないこと
ラムダ式を利用できるのはSAMインターフェースだけだと覚えていたのですが、そうでないStudent
クラスで利用できるのが、なぜなのかわかりません。ラムダ式はどういう場合に利用するのでしょうか?実際にみなさんがコードを書くうえで、どういう考えや状況からラムダ式を利用しているのか教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/20 09:42