はじめての 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 タグ:

« »

Leave a Reply

* が付いている項目は、必須項目です!

次の HTML タグと属性を利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*

Trackback URL