lambda - External argument to method reference in Java 8 -


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