Java笔记:Lamda 表达式

Java笔记:Lamda 表达式

参考资料:http://www.mldn.cn/course/40/task/512/show

一、Lamda表达式的作用

  Lamda 是一种基于函数的编程方式。java是面向对象的编程语言,也就是说一切操作都基于类,所有功能都定义在类中。很多习惯于函数编程的开发者就觉得不好用,为了吸引更多开发者,java1.8终于推出了Lamda表达式。

  但并不是有了Lamda表达式java才开始的函数编程。最早是通过匿名内部类实现的(以接口为主)。

回顾匿名内部类:

interface Message {
    public void print(String str) ;
}
public class Main {
    public static void main(String[] args) {
        Message msg = new Message() {

            @Override
            public void print(String str) {
                System.out.println(str);
            }
        };
        msg.print("hello");

    }

}

输出结果

hello

由以上代码可见,目的是为了输出一条语句,却由于java类结构的强制限制,所以显得代码过于复杂。

利用Lamda表达式实现

interface Message {
    public void print(String str) ;
}
public class Main {
    public static void main(String[] args) {
        Message msg = (s) -> System.out.println(s);
        msg.print("hello");
    }

}

首先不看语法,至少通过Lamda表达式,这个语句少了,没有了java类结构的过分限制

二、基础语法

上面程序的 Message msg = (s) -> System.out.println(s); 就是一条Lamda表达式

  其形式为:

  (参数,名称可以随意起)-> 方法体(多行要加{ }括住,只有return语句时要省略return)

  Lamda表达式的组成要求如下:

(参数):与Message接口定义的print()方法的参数类型一致,但是此处不需要进行声明。
-> :是一个固定语法,表示将参数指向方法体。

  方法体 :就是最早进行匿名内部类实现方法的时候所编写的方法体代码。

  在使用Lamda方法的时候有一个最为重要的定义要求:接口里面的方法只能有一个。

1、Lamda 表达式最重要的目的是解决匿名内部类的问题

2、如果要想使用Lamda表达式,必须以接口为基础,而且接口只能有一个抽像方法

三、函数接口的定义

  一直在强调,如果要实现Lamda表达式,那么必须有一个前提,这个前提就是接口里面定义的抽想方法只能存在一个,所以为了严格这样的语法要求。可以使用函数式接口定义。

定义函数接口:

@FunctionalInterface
interface Message {
    public void print(String str) ;
}

这样就能限制接口中的抽象方法只有一个,多会报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值