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);
});
是否可以将外部参数传递给方法引用?
回答:
不可以,您不能将参数传递给方法引用。您可以做的是创建一个返回a的方法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
将a 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));
以上是 Java 8中方法引用的外部参数 的全部内容, 来源链接: utcz.com/qa/410165.html