簡體   English   中英

Java 8中方法引用的外部參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM