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

回到顶部