SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

直近開催のイベントはこちら!

HRzine Day 2024 Winter

2024年2月1日(木)12:00~17:40

主要製品スペック一覧

人事業務の効率・確度・精度を高めるために欠かせないHRテクノロジー。その主な製品の機能を分野ごとに比較できる資料群です。製品検討の参考資料としてご活用ください。

人事労務管理システム<br>主要製品スペック一覧 2023

人事労務管理システム
主要製品スペック一覧 2023

その他のスペック一覧

タレントマネジメントシステム<br>主要製品スペック一覧 2023

タレントマネジメントシステム
主要製品スペック一覧 2023

採用管理システム<br>主要製品スペック一覧 2023

採用管理システム
主要製品スペック一覧 2023

みちこ先生のオラクル認定Javaプログラマ Silver SE 7/8 合格コース | 特別授業

【認定Java Silver】ここが変わった! OCJP Silver SE 8要点解説[後編] ~ 新出題ラムダ式


  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena

本記事の目次 )

ラムダ式

再利用することのない、その場限りのクラスを定義する場合、Java SE 7では、Sample2.javaのように匿名クラスを使用していましたが、可読性があまり良くなくコードも冗長になりがちでした。

Java SE 8ではラムダ式を使用することで、同じことをシンプルに実装することができます。Java SE 8のAPIで追加された関数型インタフェースは、ラムダ式で実装することを前提として提供されています。

ラムダ式の構文は次のとおりです。

ラムダ式の構文
( 実装するメソッドの引数 ) -> { 処理 };

ラムダ式の定義には->を使います。->の左辺には実装するメソッドの引数を、右辺には実装する処理を記述します。

ラムダ式では、関数型インタフェースの変数に、ラムダ式で記述された実装コードを代入します。Sample1.javaをラムダ式で実装した場合を見てみましょう(Sample3.java)。実行結果はSample1.javaと同じであるため掲載を割愛します。

■Sample3.java
import java.util.function.Function;

public class Sample3 {
  public static void main(String[] args) {
    Function<String, String> obj = (String str) -> {
      return "Hello " + str;
    };
    String str = obj.apply("naoki");
    System.out.println(str);
  }
}

5行目ではFunction型の変数を宣言し、ラムダ式で記述された実装コードを代入しています。5~7行目を見てみると、Functionインタフェースを使用することは推測できますが、apply()のメソッド名が記述されていません。これは、関数型インタフェースは抽象メソッドが1つしかなく、ラムダ式がどのメソッドを実装するかを判断できるからです。そのため記載する必要がありません。

Functionインタフェースのapply()メソッドの引数はString型を1つとるため、->の左辺は(String str)としています。そして、右辺が実装コードです。

ラムダ式の省略記法

ところで、先ほど「ラムダ式を用いるとシンプルに実装ができる」といいましたが、まだコード量は多く感じますね。実は、ラムダ式は様々な省略した記述が可能です。まず、->の左辺を見てみましょう。

左辺の省略
左辺の省略

次に、->の右辺を見てみましょう。

右辺の省略
右辺の省略

Sample4.javaは、Sample3.javaのラムダ式を省略したコードです。匿名クラスの実装例であるSample2.javaと比べ、シンプルな実装になったことがわかります。

■Sample4.java
import java.util.function.Function;

public class Sample4 {
  public static void main(String[] args) {
    Function<String, String> obj = str -> "Hello " + str;
    String str = obj.apply("naoki");
    System.out.println(str);
  }
}

注意

Silver SE 8試験では、省略した場合、省略しない場合ともに出題されるので確認しておきましょう。

なお、ラムダ式の仕様は大きいため、本記事ではSilver SE 8試験の範囲に説明を絞っています。ラムダ式の詳細はProject Lambdaサイトを参照してください。

次のページ
コレクションAPIの利用

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
みちこ先生のオラクル認定Javaプログラマ Silver SE 7/8 合格コース連載記事一覧

もっと読む

この記事の著者

山本道子(ヤマモト ミチコ)

2004年Sun Microsystems社を退職後、有限会社Rayを設立し、システム開発、インストラクタ、執筆業などを手がける。著書に『オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8』『同Silver SE 8』『同Gold SE 8』のほか、『SUN教科書 Webコンポーネントディベロッパ(SJC-WC)』、『携帯OS教科書 Androidアプリケーション技術者ベーシック』、『Linux教科書 LPICレベル1 スピードマスター問題集』(共著)、監訳書に『SUN教科書 Javaプログラマ(SJC-P)5.0・6.0 両対応』(いずれも翔泳社刊)などがある。月刊誌『日経Linux』(日経BP社刊)でLPIC対策記事を連載。日々の楽しみは晩酌、好きな言葉は表面張力。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事をシェア

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
HRzine
https://hrzine.jp/article/detail/39 2016/02/23 19:03

Special Contents

AD

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

2024年2月1日(木)12:00~17:40

イベントカレンダーを見る

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング