Java中的函数式编程语法
我正在阅读有关函数式编程及其Java实现的书籍。我遇到了这个例子,它与Java中的面向对象编程有一些不同的语法。是函数式编程有一些不同的语法吗Java中的函数式编程语法,java,functional-programming,runnable,Java,Functional Programming,Runnable,我正在阅读有关函数式编程及其Java实现的书籍。我遇到了这个例子,它与Java中的面向对象编程有一些不同的语法。是函数式编程有一些不同的语法吗 public class Hello { Runnable r1 = ()->(System.out.println(this);}; Runnable r2 = ()->(System.out.println(toString());}; public String toString(){ return “Howdy
public class Hello {
Runnable r1 = ()->(System.out.println(this);};
Runnable r2 = ()->(System.out.println(toString());};
public String toString(){ return “Howdy!”;}
public static void main(String args) {
new Hello().r1.run();
new Hello().r2.run();
}
看完代码后,我可以理解括号没有正确匹配,语法与面向对象的Java语法不相似
此代码未编译,在所有行上都出现以下错误:
Hello.java:19: error: class, interface, or enum expected
Runnable r2 = ()->(System.out.println(toString());};
我错过了什么?如果这个程序是正确的,它应该打印什么?
我正在Ubuntu 14.04.3上使用JavaC1.8.066
谢谢。您的代码有语法错误。应该是:
Runnable r1 = ()->{System.out.println(this);};
Runnable r2 = ()->{System.out.println(toString());};
这些是lambda表达式。这也将有助于:
Runnable r1 = ()->System.out.println(this);
Runnable r2 = ()->System.out.println(toString());
此程序将打印两次
Howdy
,因为这是Hello
类的toString
方法返回的,并且此在lambda表达式中引用声明lambda表达式的实例。您的代码有语法错误。应该是:
Runnable r1 = ()->{System.out.println(this);};
Runnable r2 = ()->{System.out.println(toString());};
这些是lambda表达式。这也将有助于:
Runnable r1 = ()->System.out.println(this);
Runnable r2 = ()->System.out.println(toString());
此程序将打印两次Howdy
,因为这是Hello
类的toString
方法返回的,并且此
在lambda表达式中引用声明lambda表达式的实例。感谢您,Eran的响应。这非常有帮助。谢谢你,埃兰的回复。这很有帮助。