長い記事を書こうとしていつまでも書けなかったので、
自分のための記事を書こうと思いました。
既に書き尽くされた感もありますが、初心者向きのメモになります。
ラムダ式とは
ラムダ式 = Java という間違った認識も生みがちですが(個人的偏見)
背景をざっと流してみます。
- CPUマルチコア化に伴う、スレッドを有効活用する需要
- Java SE 7 でのFork/Join Framework(分割統治法)を簡単に利用
- 関数を独立して扱うことが出来る
- 匿名クラスを簡単に扱える
Javaでの位置づけ
- 関数型インターフェースを簡単に記述できる
- 関数型インターフェースとは、1つの抽象メソッドを含むインターフェースのこと
- Java8では、バックグラウンドでソースコードの自動変換を行い実現
- 型推論により型の記述も省略すれば、非常にシンプルなコードが書ける
- Stream を活用するために必要
ただの列記になってしまうので、実際に比較してみます。
書いてみる
メソッド
public class ThisIsSample {
int res;
private void calculate(int value1, int value2) {
res = value1 + value2;
}
}
無名クラス
ThisIsSample printRunOut = new ThisIsSample() {
public void prt() {
System.out.println("sample");
}
};
printRunOut.prt();
ラムダ式
ThisIsSample printRunOut = () -> {
System.out.println("sample");
};
printRunOut.prt();
やはりこれだけではよく分かりません。
型推論で省略を復元してくれている、までは分かるのですが、理解したとは言えません。やはり実践しないといけないようですが、今コンパイルが出来ません。(?)
ということで、追って記載したいと思います。
参考情報
Java関数型インターフェース※ラムダ式のまとめもあり
Java8ラムダ式の使い方の基本
[Java] Java8のラムダに超入門(書き方、関数型インターフェース、独自に定義、ラムダ受け取り処理)
追記
Markdown記法 チートシート -Qiita
Markdownで文書を書くためにやったこと一覧 -Qiita
Qiita マークダウン記法 一覧表・チートシート -Qiita
時間がないので、ひとまず挙げときます・・・。
後日修正します。(Streamのこともまだよく分かっていない)
2019.7.16追記
自分は今までサーバー系とは縁がなく、小さな事務所でExcel/Access/VBAを弄ってきました。なぜ今Javaかと言いますと、Javaで構成されたRPAに触れたことで、Web以外で初めてサーバーサイドのシステムに親近感を持てたことが切っ掛けです。
いい加減な記事になってしまいましたが、生暖かく見て頂ますようお願い致します。