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