Edited at

java8 メソッド参照

More than 1 year has passed since last update.


前書き

forEachの使用方法でラムダ式を用いた方法しか知らなかったのですが、メソッド参照「::」を用いた方法もあったのでメモ。


メソッド参照

クラス名(インスタンス)::メソッド名

のように記述することで、メソッドの参照が可能


forEach例


メソッド参照

list.forEach(System.out :: println);


ラムダ式

list.forEach(x -> System.out.println(x));


使用例

import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {

Main main = new Main();
System.out.println("----No1----");
main.test().forEach(main :: myPrint);
System.out.println("----No2----");
main.test().forEach(x -> main.myPrint(x));

}

public List<String> test(){
List<String> list = new ArrayList<>();
list.add("AA");
list.add("BB");
list.add("CC");
list.add("DD");
return list;
}

public void myPrint(String str){
System.out.println(str);
}
}

インスタンスの持つメソッドを呼び出す例ですが、実行結果はどちらも同じです。


実行結果

----No1----

AA
BB
CC
DD
----No2----
AA
BB
CC
DD