前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java基础】Java8新特性-Lambda表达式

【Java基础】Java8新特性-Lambda表达式

作者头像
全栈开发日记
发布2022-05-12 20:01:19
1630
发布2022-05-12 20:01:19
举报
文章被收录于专栏:全栈开发日记

本篇目录

1、Lambda表达式是什么 2、Lambda表达式的语法 3、Lambda表达式的特点 4、Lambda表达式的简单使用 5、为什么使用Lambda表达式 6、方法引用 7、函数式接口

1 Lambda表达式是什么?

Lambda表达式是Java8中添加的一个新特性,允许把函数作为一个方法的参数,称为“函数式编程”。

举个例子

代码语言:javascript
复制
List<Integer> list=new ArrayList<>();
list.forEach(item->{
    System.out.println(item);
});

上面代码中List将匿名函数 Lambda 的表达式作为 forEach() 方法的参数,实现了遍历集合的操作。

2 Lambda表达式的语法

一个最简单的lambda表达式如下:

代码语言:javascript
复制
Test test=()->{
  System.out.println("我是方法体");
}

这段代码表示将实现一个接口的方法,()表示参数,{}表示方法体。

3 Lambda表达式特点

① 当参数只有一个时,()可省略。

② 当方法体只有一句时,{}可省略。

③ 当方法有返回值时,方法体只有一个返回语句时,return关键字可以省略。

4 Lambda表达式的简单使用

定义一个接口

代码语言:javascript
复制
public interface TestInterface {
    void test(String str);
}

使用Lambda表达式实现接口

代码语言:javascript
复制
public static void main(String[] args) {
    TestInterface test=(a)->{
        System.out.println(a);
    };
    test.test("测试");
}

5 为什么使用Lambda表达式

Lambda表达式允许把函数作为一个参数进行传递,使Lambda表达式可以写出更简洁的代码风格,以极少的代码使表达能力大大提升。

6 方法引用

当多个Lambda表达式是相同内容时,我们可以定义一个公共方法,通过方法引用来实现接口,可以避免代码重复。

在Lambda表达式简单使用的例子基础上,加入如下内容:

公共方法

代码语言:javascript
复制
public void test(String t){
    System.out.println("我是公共方法,参数为:"+t);
}

方法引用

代码语言:javascript
复制
Main m = new Main();
TestInterface test=m::test;
test.test("测试");

当目标方法是静态方法时,可以直接通过类名引用,如:

代码语言:javascript
复制
TestInterface test=Main::test;

当目标方法是构造方法时,还可以写做如下形式:

代码语言:javascript
复制
TestInterface test=Main::new;

7 函数式接口

在任意函数式接口上使用@FunctionalInterface注解来标识这个接口是一个函数式接口。

7.1 Java内置四大核心函数式接口

7.2 自定义函数式接口

创建一个函数式接口

代码语言:javascript
复制
@FunctionalInterface
public interface TestInterface<T> {
    T test(String str);
}

创建一个方法,将函数式接口作为方法参数

代码语言:javascript
复制
public static String test(TestInterface<String> param){
    return "测试函数式接口";
}

调用如上方法

代码语言:javascript
复制
String val=test(t->{
    return t.toLowerCase();
});
System.out.println(val);
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档