はじめての Lambda vol.3

Java

JDK 8 で採用される予定の Lambda についていろいろ調べているんですが

今回は Virtual Extension Methods または Defender Methods と言われている?

新たな(都合の良い?)ものについて調べてみました。

インタフェースを実装する場合 JDK 7 までは全てのメソッドを実装する必要でしたよね。

JDK 8 ではデフォルト実装を定義できるらしいんです。

具体的には次のプログラムを見てください。

jp\yucchi\virtual_extension_method_1\Virtual_Extension_Method_1.java

今までだったら sayHelloDefalter() メソッドを HelloImplementer クラスが実装していないので

コンパイルエラーになったはずですよね。

JDK 8 ではメソッドに defalt キーワードを付けることによって

デフォルト実装されます!

実際に動かしてみました。

Virtual Extension Methods 1

ちゃんと動いてます。

もちろん、デフォルト実装されたメソッドも!

ここでちょっと疑問が・・・

デフォルト実装されたメソッドってオーラーライドできるの?

コードを次のように変更しました。

 

jp\yucchi\virtual_extension_method_1\Virtual_Extension_Method_1.java

 

それでは実行させてみます。

Virtual Extension Methods 2

ちゃんとオーバーライドされてますね!(^^)

なかなか面白いですね。

この Virtual Extension Methods は Lambda を実装するのにおまけではなく

必要不可欠な実装らしいです。

私は Lambda のことはまだほとんど解りませんが JDK 8 がリリースされるのが少し楽しみになってきました。(*^_^*)

Hatena タグ: