Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用单个参数传递Java8Lambda_Java_Lambda_Java 8 - Fatal编程技术网

如何使用单个参数传递Java8Lambda

如何使用单个参数传递Java8Lambda,java,lambda,java-8,Java,Lambda,Java 8,我只想传递一个lambda(代码块)并在需要时执行它。如何在下面的代码中实现方法executeLambda(…)(以及什么是方法签名): 通过提供合理的参数类型。采用lambda的方法不了解lambda 相反,您可以传递一个可调用的对象。然后,您的方法必须调用该对象上的call()方法!或者,可以使用Runnable或String的使用者(因为Callable应该返回一个值,而您调用的方法是void) lambda接受一个参数,但只将lambda传递给executeLambda,而不是值。如果希

我只想传递一个lambda(代码块)并在需要时执行它。如何在下面的代码中实现方法
executeLambda(…)
(以及什么是方法签名):


通过提供合理的参数类型。采用lambda的方法不了解lambda


相反,您可以传递一个可调用的对象。然后,您的方法必须调用该对象上的call()方法!或者,可以使用Runnable或String的使用者(因为Callable应该返回一个值,而您调用的方法是void)

lambda接受一个参数,但只将lambda传递给
executeLambda
,而不是值。如果希望lambda捕获局部变量,请不要使用参数编写,但如果确实希望lambda使用一个参数,则可以这样编写:

import java.util.function.Consumer;

public static void main(String[] args) {
    String message = "Hello World";
    executeLambda(message, value -> print(value));
}

public static void executeLambda(String value, Consumer<String> lambda) {
    lambda.accept(value);
}
import java.util.function.Consumer;
公共静态void main(字符串[]args){
String message=“Hello World”;
executeLambda(消息,值->打印(值));
}
公共静态void executeLambda(字符串值,使用者lambda){
lambda.接受(值);
}

如果希望它捕获
,那么使用
Runnable
,将lambda写为
()->print(value)
,并像
Runnable那样调用它。run()

可调用
在这里不是最佳选择,因为它不需要返回值
Consumer
是一个更好的选择。我已经使用Lambda's一段时间了,实际上已经通过了我自己的,并且已经读了一本关于它的书。我面临的挑战是,如何使用您自己的不太清楚,几乎所有关于Lambda的示例和信息都是关于如何使用它们作为参数的。例如,如何传递lambda以过滤流等。无论哪种方式,在回答中使用否定注释通常都不是好的回答形式…使用
executeLambdaCode()
方法声明一个
函数接口
public static void main(String[] args)
{
    String value = "Hello World";
    executeLambda(() -> print(value));
}

public static void print(String value)
{
    System.out.println(value);
}

public static void executeLambda(Runnable runnable)
{
    runnable.run();
}
import java.util.function.Consumer;

public static void main(String[] args) {
    String message = "Hello World";
    executeLambda(message, value -> print(value));
}

public static void executeLambda(String value, Consumer<String> lambda) {
    lambda.accept(value);
}