社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

Java challenge MethodReference

なにが出力される?

public static void main(String[] args) {
	List<Homer> homers = new ArrayList<>();
	homers.add(new Homer());
	homers.add(new Homer());
	homers.add(new Homer());
		
	homers.removeIf(e -> e.talk.equals("D'oh"));
	homers.forEach(System.out::println);
}
	
static class Homer {
	String talk = "D'oh!";
	
	public String toString() {
		return talk;
	}
}

考察
homers に3つの Homer インスタンスが格納された後、talk の内容を比較しているが、いずれも一致しないので除外はされないはず。
その後、println() にインスタンスを渡しただけで、toString() が呼び出される?とすれば、 D'oh! が3つ出力されるはず。

結果
D'oh!
D'oh!
D'oh!

println()メソッドが、渡されたインスタンスのtoString()メソッドを呼び出すということ。
割と基本的なことだったみたいですが、toString() を明示的に書くようにしていたので、勉強になりました。