我的追求是如何在函数中将lambda表达式作为参数?
我的意图是,当我执行sum方法时,方法accept中的参数被对象延续使用并使用(是吗?),我的疑问是我如何做才能使该对象延续成为使用value1 value2的结果,然后执行其他操作?
像X.sum(1,2,resultOfSum-> {system.out.println(resultOfSum);})一样;
(我已经试过了,日食使它像一个错误)
对不起,我的英语不太好.
这是我的代码.
public class ExampleClass {
public static void main(String[] args) {
X x = new X();
int nro ;
x.sum(1,2,"AN EXAMPLE OF LAMBDA"));
}
}
public class X{
public void sum(int value1,int value2,Consumer continuation)
{
continuation.accept(value2+value1);
}}
解决方法:
有趣的是,您当前的lambda表达式将对此有效(除非修复了system.out.println的拼写错误).下面只是表达它的一种更简洁的方式.
实际上,您正在编写一种方法,该方法接受两个值,产生一个值,并将其放置在某种类型的使用者中.该使用者可以是一个集合,可以处理结果的某些函数或另一个对象.
让我们暂时将lambda排除在等式之外,并使用匿名类将其写出来.
x.sum(1, 2, new Consumer() {
@Override
public void accept(final Integer value) {
// what should go here?
}
});
我们需要告诉这个结果要去哪里.我们有几种选择:
>集合(列表,集合等)
>新的参考对象
>接受参数的方法引用
让我们采用最简单的方法并简单地将其打印出来.
x.sum(1, 2, new Consumer() {
@Override
public void accept(final Integer value) {
System.out.println(value);
}
});
现在,这很有意义了-我们将两个数字的结果相加,将它们加在一起,然后将结果打印到屏幕上.
让我们将lambdas重新组合.这可以用lambda的方式表示:
x.sum(1, 2, System.out::println);
实际上,无论我们得到什么结果值,我们都希望允许println方法使用它.
标签:java-8,java,lambda
来源: https://codeday.me/bug/20191121/2053351.html