当前位置:  开发笔记 > 编程语言 > 正文

Java中的函数编程语法

如何解决《Java中的函数编程语法》经验,为你挑选了1个好方法。

我正在阅读有关函数式编程及其在Java中的实现的内容.我遇到的这个例子与Java中的面向对象编程有一些不同的语法.功能编程是否有一些不同的语法?

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

在完成代码之后,我可以理解括号不匹配,语法与OOP的Java语法不相似.

此代码无法编译并在所有行上给出以下错误:

Hello.java:19: error: class, interface, or enum expected
Runnable r2 = ()->(System.out.println(toString());};

我错过了什么?如果这个程序是正确的,它会打印什么?我在Ubuntu 14.04.3上使用javac 1.8.0_66

谢谢.



1> Eran..:

您的代码有语法错误.它应该是 :

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两次,因为这就是toString你的Hello类的方法返回的内容,而thislambda表达式中的内容是指声明lambda表达式的实例.

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有