当前位置: 首页 > 面试题库 >

Java 8中方法引用的外部参数

华星剑
2023-03-14
问题内容

我希望将外部参数传递给方法引用:

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));


 类似资料:
  • 问题内容: 我想知道带有方法引用和功能接口的所有这些东西如何在较低级别上工作。最简单的例子是我们有一些列表 现在我们要使用Collections类对其进行排序,因此我们可以调用: 但是,如果我们定义自定义比较器,则可能类似于: 问题在于Collections.sort具有两个参数:List和Comparator。由于Comparator是功能性接口,因此可以用具有相同签名(参数和返回类型)的lam

  • 主要内容:1 Java8 方法引用的介绍,2 Java8 方法引用的分类,3 Java8 方法引用:引用静态方法,4 Java8 方法引用:引用实例方法,5 Java8 方法引用:引用构造方法1 Java8 方法引用的介绍 Java提供了一个新功能,称为Java 8中的方法引用。方法引用用于引用功能接口的方法。它是lambda表达式的紧凑和简单形式。每次使用lambda表达式仅引用方法时,都可以将lambda表达式替换为方法引用。在本教程中,我们将详细解释方法参考概念。 2 Java8 方法引用

  • 本文向大家介绍使用Java8中的方法引用来引用实例方法,包括了使用Java8中的方法引用来引用实例方法的使用技巧和注意事项,需要的朋友参考一下 Java中的Lambda表达式使您可以将功能作为参数传递给方法。您也可以使用lambda表达式调用现有方法。 方法引用是简单,易于阅读的lambda表达式,可通过lambda表达式中的名称来调用/引用和现有方法。 语法 以下是在Java中引用实例方法的语法

  • 本文向大家介绍在html中引入外部js文件,并调用带参函数的方法,包括了在html中引入外部js文件,并调用带参函数的方法的使用技巧和注意事项,需要的朋友参考一下 在html中引入外部js文件,并调用js文件中的带参函数 1 项目结构 2 编写a.js、test.html 3 测试结果 以上就是小编为大家带来的在html中引入外部js文件,并调用带参函数的方法全部内容了,希望大家多多支持呐喊教程~

  • 本文向大家介绍使用Java8中的方法引用来引用构造函数,包括了使用Java8中的方法引用来引用构造函数的使用技巧和注意事项,需要的朋友参考一下 Java中的Lambda表达式使您可以将功能作为参数传递给方法。您也可以使用lambda表达式调用现有方法。 方法引用是简单,易于阅读的lambda表达式,可通过lambda表达式来调用/引用以及现有方法的名称。除了实例和静态方法,您还可以使用new关键字

  • 本文向大家介绍maven项目引用外部jar包的方法,包括了maven项目引用外部jar包的方法的使用技巧和注意事项,需要的朋友参考一下 问题描述: 有一个java maven web项目,需要引入一个第三方包gdal.jar,但是这个包是自己打包的,在maven中央库里面找不到该包,因此我采用传统的方式,将这个包拷贝到:项目名称\src\main\webapp\WEB-INF\lib的目录下,然后