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() を明示的に書くようにしていたので、勉強になりました。