首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一篇文章掌握lambda,function下41个类

一篇文章掌握lambda,function下41个类

作者头像
香菜聊游戏
发布2021-05-26 10:42:29
发布2021-05-26 10:42:29
5130
举报
文章被收录于专栏:香菜聊游戏香菜聊游戏

Java8 发布以来,lambda 表达式简化了代码,增强了阅读性,代码更加简洁。lambda 主要是给Java增加了函数式编程的方式。lambda表达式的实现就是functionInterface。

函数编程的最直接的表现在于将函数作为数据自由传递,结合泛型推导能力使代码表达能力获得飞一般的提升。同时Lambda表达式让你能够将函数作为方法参数或者将代码作为数据对待,让你发现“行级代码”优美。

lambda 的语法是 :

代码语言:javascript
复制
(输入)->{输出}

只有一行代码时,可以不加括号,可以不写return。

代码语言:javascript
复制
 IntSupplier func = ()-> 1;

Java中的first class 是class ,所以底层来说是不支持函数式编程的,因为函数式编程语言的first class 是函数。为了增加函数式编程的思想,所以有了functionInterface这种解决方式。

英文翻译

单词

中文

consumer

消费者

supplier

生产者

function

函数

predicate

判断,预测

1.行为分类

2.实现分类

1.function

命名方式: 输入类型To输出类型Function

2.Consumer

命名方式:输入类型Consumer

3.supplier

命名方式:输出类型Supplier

3.用法

代码语言:javascript
复制
package org.pdool.reflect;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

/**
 * 玩家类 公众号:香菜聊游戏
 */
@AllArgsConstructor
public class Player {
    //  名字
    @Getter @Setter
    public String name;
    //  性别
    @Getter @Setter
    private int sex;
    //  年龄
    @Getter @Setter
    private int age;
    //  工资
    @Getter @Setter
    private int salary;

}

在同步代码块的时候经常会到处添加synchronized,为了保证所有的代码都在player的同步下做,可以使用function,减少代码重复。

代码语言:javascript
复制
public Object doSynOnPlayer(Function<Player,Object> function){
        synchronized (player){
            return function.apply(this.player);
        }
    }

4.自己实现

代码语言:javascript
复制
package org.pdool.reflect;

/**
 * 公众号:香菜聊游戏
 */
@FunctionalInterface
interface PlayerService {
    void apply(Player player);
}

public static void main(String[] args) throws Exception {
        Player player = new Player("香菜聊游戏", 1, 18, 3000);
        PlayerService func = (player1)-> System.out.println(player1.getSex());
        func.apply(player);

    }

5.总结

上面这么多实现并不重要,只要记住函数式可以传递的,function<T,R>,一个入参,一个返回值。掌握了之后就会发现有些并不需要自己实现,有现成的何乐而不为。

。函数式编程的lambda现在很多语言都已经支持,java也有很好的api支持,可以试着接受这种方式,不用一下怎么才能发现不合适,说不定你能发现他的好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 香菜聊游戏 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.行为分类
  • 2.实现分类
  • 3.用法
  • 5.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档