Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レトロラムダはどれ程モダンか

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 レトロラムダはどれ程モダンか

Avatar for rejasupotaro

rejasupotaro

May 15, 2014
Tweet

More Decks by rejasupotaro

Other Decks in Technology

Transcript

  1. // エスデイケエで定義されています interface OnClickListener { public void onClick(View v); }

    ! // 貴方のコード mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 此処で何らかの処理を致す } }); 伝統的な アンドロイドジャバ
  2. ジャバ捌の機能の御浚い 一 ラムダ式 一 メソッド参照 一 実質的ファイナル 一 ジェネリクスの改�善 一

    便利なコレクション操作 一 ストリイム処理 一 エヌアイオゝ 一 オプショナル 一 タイプアノテーション 一 日付処理の改�善 一 デフォルト実装 一 関数型インタフェース 一 ファンクションクラス
  3. 実質的ファイナル 書き換えられていない変数はファイナルと見なされる。 ! ppuubblliicc vvooiidd ffoooo((iinntt aa)) {{ nneeww RRuunnnnaabbllee(()){{

    @@OOvveerrrriiddee ppuubblliicc vvooiidd rruunn(()) {{ //// 此処でファイナルなしでaaを参照可能 }} }}..rruunn(());; }}
  4. ジェネリクスの改�善 型パラメエタの省略できる箇所が増えた。 ! MMaapp<<SSttrriinngg,, LLiisstt<<SSttrriinngg>>>> mmaapp == nneeww HHaasshhMMaapp<<>>(());; mmaapp..ppuutt((""kkeeyy"",,

    nneeww AArrrraayyLLiisstt<<>>(())));; //// ジャバ䕳ではコンパイルエラア ! //// ジャバ䕳の場合 LLiisstt<<LLiisstt<<SSttrriinngg>>>> lliisstt == nneeww AArrrraayyLLiisstt<<>>(());; lliisstt..aadddd((CCoolllleeccttiioonnss..<<SSttrriinngg>>eemmppttyyLLiisstt(())));; ! //// ジャバ捌の場合 LLiisstt<<LLiisstt<<SSttrriinngg>>>> lliisstt == nneeww AArrrraayyLLiisstt<<>>(());; lliisstt..aadddd((CCoolllleeccttiioonnss..eemmppttyyLLiisstt(())));;
  5. ジャバ捌の機能の御浚い 一 ラムダ式 一 メソッド参照 一 実質的ファイナル 一 ジェネリクスの改�善 一

    便利なコレクション操作 一 ストリイム処理 一 エヌアイオゝ 一 オプショナル 一 タイプアノテーション 一 日付処理の改�善 一 デフォルト実装 一 関数型インタフェース 一 ファンクションクラス
  6. ジャバの バイトコオドエンジニアリング 一 aassppeeccttjj ((hhuuggoo,, GGAAlleettttee)) 一 jjaavvaaaassssiisstt ((aannddrrooiidd--ppoowweerr--aasssseerrtt--pplluuggiinn)) 一

    AASSMM ((GGrroooovvyy,, PPMMDD)) //// LLaammbbddaaSSaavviinnggCCllaassssFFiilleeTTrraannssffoorrmmeerr..jjaavvaa bbyyttee[[]] bbaacckkppoorrtteeddBByytteeccooddee == LLaammbbddaaCCllaassssBBaacckkppoorrtteerr..ttrraannssffoorrmm(( ccllaassssffiilleeBBuuffffeerr,, ttaarrggeettVVeerrssiioonn));;
  7. sseennddMMeessssaaggeeCClliicckk ..ffllaattMMaapp((oo -->> OObbsseerrvvaabbllee..ccoommbbiinneeLLaatteesstt(( pphhoonneeNNuummbbeerrTTeexxtt,, mmeessssaaggeeBBooddyyTTeexxtt,, MMeessssaaggee::::nneeww)) ..ttaakkee((11)))) ..ssuubbssccrriibbee((mmeessssaaggee -->>

    {{ iiff ((mmeessssaaggee..ggeettPPhhoonneeNNuummbbeerr(())..ttrriimm(())..eeqquuaallss(("""")))) {{ pphhoonneeNNuummbbeerrEEddiittTTeexxtt..rreeqquueessttFFooccuuss(());; }} eellssee {{ mmeessssaaggeeBBooddyyEEddiittTTeexxtt..sseettTTeexxtt((""""));; mmeessssaaggeeLLiissttAAddaapptteerr..aadddd((mmeessssaaggee..ggeettMMeessssaaggeeBBooddyy(())));; }} }}));; 例えば関数型インタフェースを多用 するようなライブラリを使う時