匿名クラス便利じゃないか!!
目次とぶっつぶつテーマ
http://snoopopo.hatenablog.com/entry/2015/04/14/102732
今日のテーマ:ラムダ式のメリットを知る前提知識をつける 2
・関数型インタフェースの実装の記述の簡素化
・ラムダ式を使ったJava8での新機能(streamAPIとか?)
前回↑より引き続き、まずは記述が簡素になったことを取り上げてく.
ラムダ式を使う前の書き方 匿名クラス
Javaラムダ式メモ(Hishidama's Java8 Lambda Expression Memo)
上記のサイトに上げられている例を見てみる.
Runnable runner = new Runnable() { @Override public void run() { System.out.println("example"); } }; runner.run();
たとえば、スレッドの実装で使われる java.lang.Runnableインタフェースは、関数型インタフェースだ。
↑の書き方だけど、インタフェースに対して new をしていたり見たことない書き方をしている.
これが匿名クラスというものを使用した書き方らしい。
上記はRunnableインタフェースを実装した(run()メソッドを実装した)匿名クラスのインスタンスが生成( new )されて、
実装したrunメソッドを呼んでいる例。
new Runnable() { @Override public void run() { System.out.println("tokumei class"); } }.run();
こんな↑書き方も出来ます。
これは一回だけというか、その場でだけ使う場合に匿名クラスを使うかんじかなと。
見たことない書き方だったけど個人的にはわかりやすいし、1度しか使わないクラスはこう書く方が便利だと思う。
実際にメモリ開放するタイミングなどはGCまかせなので、わからないはずだけど、 クラスを定義するよりもスコープも狭いのは確かだ。
匿名クラスは、名前を定義しないクラスなので、無名クラスとも呼ばれる。
次回は、これをラムダ式で書く方法にようやくうつります。