我希望将外部参数传递给方法引用:
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);
});
是否可以将外部参数传递给方法参考?
答案 0 :(得分:7)
不,您无法将参数传递给方法参考。你可以做的是创建一个返回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));