Java初心者がJava8のラムダ式をやってみた
- 2. えばた あや
Twitter: @aya_122
お仕事: Groovy(フレームワークはGrails)、javascript
Java歴: 学校の授業でちょっとやったのと、
仕事の研修でちょっとやったくらいの初心者
好きな食べ物: ラーメン
苦手な事: 人前で発表すること←
自己紹介(´ω` )
- 20. 実際に使ってみる
その前に!以前の書き方で書いてみると…
List<String> food = new ArrayList<String>();
food.add("アイス");
food.add("ラーメン");
food.add("もつ鍋");
for ( String s : food ) {
System.out.println(“好きな食べ物: ” + s);
}
<出力結果>
好きな食べ物: アイス
好きな食べ物: ラーメン
好きな食べ物: もつ鍋
Listの値を
1つずつ出力
- 21. 実際に使ってみる
ラムダ式を使うと!!
List<String> food = new ArrayList<String>();
food.add("アイス");
food.add("ラーメン");
food.add("もつ鍋");
food.forEach(s -> System.out.println("好きな食べ物: " + s));
Java8な
書き方(‾∀‾ )
<出力結果>
好きな食べ物: アイス
好きな食べ物: ラーメン
好きな食べ物: もつ鍋
- 22. 注意点
int n = 1;
Runnable runner = () -> {
n++;
};
runner.run();
ちなみに、このように書くと…
- 23. 注意点
int n = 1;
Runnable runner = () -> {
n++;
};
runner.run();
コンパイル
エラー
ラムダ式の外側で定義された変数に、
ラムダ式の内側から値を代入すると
コンパイルエラー
- 31. 問題
続き…
3. List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.forEach(_ -> System.out.println(_));
4. Runnable runner = () -> System.out.println(this);
runner.run();
- 33. 答え
正解は、
4. Runnable runner = () -> System.out.println(this);
runner.run();
です!
Runnable runner = () -> System.out.println(toString());
runner.run();
と同じ出力結果が得られる
- 34. 解説
1. Object object = () -> System.out.println("abc");
ラムダ式がどの関数型インターフェースのものなのか
分からない為、コンパイルエラー
Object object = (Runnable)() -> System.out.println("abc");
こう書くことでエラーから抜け出せます。
- 35. 解説
2. int n = 1;
Runnable runner = () -> System.out.println(n);
n++;
runner.run();
変数に再代入する場所がラムダ式の外でもコンパイルエラー
- 36. 解説
3. List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.forEach(_ -> System.out.println(_));
ラムダ式の引数名には、アンダーバーのみのものが使えない
ため、コンパイルエラー
→ 文字列等を使うこと