java中的Lambda参数
我的问题是如何将lambda表达式作为函数中的参数?? 我的意图是,当我执行sum方法时,方法accept中的参数被对象延拓使用(我说得对吗??),我的疑问是,我该如何使这个对象延拓成为一个lambda表达式,它使用value1+value2的结果,然后再执行其他操作 比如java中的Lambda参数,java,lambda,java-8,Java,Lambda,Java 8,我的问题是如何将lambda表达式作为函数中的参数?? 我的意图是,当我执行sum方法时,方法accept中的参数被对象延拓使用(我说得对吗??),我的疑问是,我该如何使这个对象延拓成为一个lambda表达式,它使用value1+value2的结果,然后再执行其他操作 比如X.sum(1,2,resultosum->{system.out.println(resultosum);}) (我已经试过了,eclipse把它当作一个错误) 对不起,我的英语不太好 这是我的密码 public class
X.sum(1,2,resultosum->{system.out.println(resultosum);})代码>
(我已经试过了,eclipse把它当作一个错误)
对不起,我的英语不太好
这是我的密码
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<Integer> continuation)
{
continuation.accept(value2+value1);
}}
公共类示例类{
公共静态void main(字符串[]args){
X=新的X();
国际自然资源组织;
x、 sum(1,2,“LAMBDA的一个示例”);
}
}
公共X类{
公共作废金额(整数值1、整数值2、消费者续集)
{
继续。接受(值2+1);
}}
有趣的是,您当前的lambda表达式将适用于此(除非对system.out.println的打字错误进行修复)。下面只是一个更简洁的表达方式
实际上,您正在编写一个方法,该方法接受两个值,生成一个值,并将其放置在某种消费者中。该使用者可以是一个集合、一些可以处理结果的函数或另一个对象
让我们暂时把lambdas从方程中去掉,用一个匿名类写出这个
x.sum(1, 2, new Consumer<Integer>() {
@Override
public void accept(final Integer value) {
// what should go here?
}
});
现在,这有点道理了——我们将两个数字的结果相加,然后将结果打印到屏幕上
让我们把lambdas放回调料中。这可以用λ表示,如下所示:
x.sum(1, 2, System.out::println);
实际上,不管我们得到的结果值是什么,我们都希望允许println
方法使用它。我想我理解您的意图。在你的问题中,重要的是要理解“我们希望作为Lambda传递的行为是什么?”。在您的案例中,这个问题的答案是“打印传递给Lambda/消费者实例的总和的值”
为了实现这一点,我们需要创建一个Lambda实例来进行打印,然后将其传递给X.sum方法。下面是实现相同功能的代码
//ExampleClass.java
import java.util.function.Consumer;
public class ExampleClass {
public static void main(String[] args) {
X x = new X();
Consumer<Integer> consumerInstance=(value) -> System.out.println("Summation Result is ->value");
x.sum(1, 2, consumerInstance);
}
}
//X.java
import java.util.function.Consumer;
public class X{
public void sum(int value1,int value2,Consumer<Integer> continuation){
continuation.accept(value1+value2);
}
}
//ExampleClass.java
导入java.util.function.Consumer;
公共类示例类{
公共静态void main(字符串[]args){
X=新的X();
Consumer consumerInstance=(value)->System.out.println(“求和结果为->值”);
x、 总和(1,2,1);
}
}
//X.java
导入java.util.function.Consumer;
公共X类{
公共作废金额(整数值1、整数值2、消费者续集){
继续。接受(值1+值2);
}
}
有关Lambda表达式的基本理解,请参考此链接-
(注:www.javabrahman.com是我拥有的一个科技博客。)我在你的主X.sum(1,2,“LAMBDA的一个例子”)中看到了一个额外的);可能是这个吗?是的,有,但我没有粘贴代码,是我写的。我需要一些lambda的示例来使用它。我放了“”来显示lambda可以匹配的内容。可以使用lambda表达式value->System.out.println()
或方法引用System.out::println
。在value->System.out::println
这样的表达式中同时使用这两个表达式,在需要消费者的上下文中是错误的。顺便说一下,我建议用IntConsumer
替换Consumer
。value->System.out::println
不应该compile@FedericoPeraltaSchaffner:谢谢你接电话。我已经更新了我的答案。奇怪……它一定是在Java8的早期版本上工作的,因为我可能会将它放入IntelliJ中进行验证。
//ExampleClass.java
import java.util.function.Consumer;
public class ExampleClass {
public static void main(String[] args) {
X x = new X();
Consumer<Integer> consumerInstance=(value) -> System.out.println("Summation Result is ->value");
x.sum(1, 2, consumerInstance);
}
}
//X.java
import java.util.function.Consumer;
public class X{
public void sum(int value1,int value2,Consumer<Integer> continuation){
continuation.accept(value1+value2);
}
}