[英]External argument to method reference in Java 8
我希望將外部參數傳遞給方法引用:
String prefix = "The number is :";
numbers.forEach(Main::printWithPrefix);
private static void printWithPrefix(Integer number) {
System.out.println(number);
}
我不知道怎么做。 我能用lambda做到這一點:
String prefix = "The number is :";
numbers.forEach(number -> {
System.out.println(prefix + number);
});
是否可以將外部參數傳遞給方法引用?
不,您不能將參數傳遞給方法引用。 你可以做的是創建一個返回Consumer
的方法:
private static Consumer<Integer> printWithPrefix(String prefix) {
return number -> System.out.println(prefix + number);
}
然后,這可以作為創建Consumer
的工廠,您可以將其傳遞給numbers.forEach
:
String prefix = "The number is :";
numbers.forEach(printWithPrefix(prefix));
您甚至可以使它更通用,創建一個printWithPrefix
方法,將Consumer
作為參數,以便您可以傳入另一個,如果您想:
private static Consumer<Integer> printWithPrefix(String prefix,
Consumer<Integer> printer) {
return number -> {
System.out.print(prefix);
printer.accept(number);
};
}
例如,您可以使用printNumber
方法:
private static void printNumber(Integer number) {
System.out.println(number);
}
String prefix = "The number is :";
numbers.forEach(printWithPrefix(prefix, Main::printNumber));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.