i looking pass external parameter method reference:
string prefix = "the number :"; numbers.foreach(main::printwithprefix); private static void printwithprefix(integer number) { system.out.println(number); }
i no idea on how it. able lambda:
string prefix = "the number :"; numbers.foreach(number -> { system.out.println(prefix + number); });
is possible pass external parameter method reference?
no, cannot pass parameter method reference. can create method returns consumer
:
private static consumer<integer> printwithprefix(string prefix) { return number -> system.out.println(prefix + number); }
this works factory creating consumer
can pass numbers.foreach
:
string prefix = "the number :"; numbers.foreach(printwithprefix(prefix));
you can make bit more general, creating printwithprefix
method takes consumer
argument pass in different 1 if you'd want to:
private static consumer<integer> printwithprefix(string prefix, consumer<integer> printer) { return number -> { system.out.print(prefix); printer.accept(number); }; }
you use it, example, printnumber
method:
private static void printnumber(integer number) { system.out.println(number); } string prefix = "the number :"; numbers.foreach(printwithprefix(prefix, main::printnumber));
Comments
Post a Comment