【楽チンJava】メソッド参照での呼び出し方

こんにちは!侍エンジニア インストラクターの本多です。

Java8より「メソッド参照」が導入されました。

これを使うと、ラムダ式を書かずに直接メソッドを実行できる、などのメリットがあります。

この記事では、メソッド参照について

・メソッド参照とは何か
・メソッド参照の使い方

という基本的な内容から、

・コンストラクタ参照

といった応用的な内容に関しても解説していきます。

今回はメソッド参照について、使い方をわかりやすく解説します!

なお、ラムダ式そのものについて知りたい方は、以下のリンクをご覧ください。

【Java入門】Java8のラムダ式の使い方とメリットとは(Stream API)
更新日 : 2018年10月29日

メソッド参照とは

すでに定義済みのメソッドを、引数なしで呼び出せるのがメソッド参照です。

ラムダ式と同じくJava8から導入された機能で、基本形は下記のとおりです。

メソッド参照の使い方

メソッド参照の使い方について、要素の値を表示する基本的な例から、引数が複数ある場合や戻り値を返す場合など応用的な例についても確認していきましょう。

ラムダ式での呼び出しについて

ラムダ式でメソッドを呼び出す方法について、サンプルコードで確認してみましょう。

実行結果:

このサンプルコードでは、ラムダ式でメソッドを呼び出しています。

メソッド参照での呼び出しについて

先ほどのサンプルコードをメソッド参照で書き換えてみましょう。

実行結果:

ずいぶんすっきりした感じになります。

引数が複数の場合の扱い方について

引数が2つ以上の場合について、サンプルコードで確認していきましょう。

メソッド参照やラムダ式の記述を使う場合は、引数と戻り値の型が一致する関数型インターフェースのオブジェクトに代入します。

実行結果:

このサンプルコードでは、従来はInteger.compare()と記述しているコードをメソッド参照を使ってInteger::compareと記述しています。

戻り値の扱い方について

戻り値を持つメソッドのメソッド参照の呼び出しについて、サンプルコードで確認していきましょう。

実行結果:

このサンプルコードでは、従来はstr.length()と記述しているコードをメソッド参照を使ってstr::lengthと記述しています。

関数型インタフェースIntSupplierのオブジェクトisに戻り値を代入しています。

そしてgetAsIntメソッドを使って戻り値を取得しています。

なお、関数型インタフェースIntSupplierはパッケージjava.util.functionに含まれています。

パッケージjava.util.functionには、ラムダ式やメソッド参照のターゲットとなる型が含まれます。

str::lengthはint型を返すのでIntSupplierを使用しています。

他にもLongSupplierDoubleSupplierBooleanSupplierなどが用意されています。

コンストラクタ参照

メソッド参照と同じように、クラスのコンストラクタを参照することをコンストラクタ参照といい、戻り値としてオブジェクトを返します

基本形は下記のとおりです。

サンプルコードで確認していきましょう。

実行結果:

このサンプルコードでは、ArrayList::newによってArrayList型のオブジェクトを生成し、supplier.get()でList型のオブジェクトを取得しています。

コンストラクタについて詳しく知りたい方へ

この記事で使用した、コンストラクタの基本的な使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

【Java入門】コンストラクタの使い方総まとめ(クラス/インスタンス)
更新日 : 2019年4月8日

メソッドの使い方総まとめ(呼び出し、引数、戻り値)

この記事では紹介しきれなかったメソッドのいろいろな使い方を次の記事にまとめているので、ぜひ確認してください!

【Java入門】メソッドの使い方総まとめ(呼び出し、引数、戻り値)
更新日 : 2019年3月31日

まとめ

この記事ではメソッド参照について解説しました。

メソッド参照を使うと、Java8以前と比較してシンプルなコードが書けるようになります。

今はピンとこないかもしれませんが利用シーンが広がりつつあるので、今のうちに慣れておくことをおススメします。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

本多 農

本多 農

関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説