(软构)java函数式与lambda

概述

​ “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

​ JDK1.8之后引入的一种语法,他的写法是使用一个->符号,箭头将Lambda表达式分为左右两部分,左边写的是实现的这个接口中的抽象方法中的形参列表,右边就是对抽象方法的处理

实现的这个接口中的抽象方法中的形参列表 -> 抽象方法的处理

lambda表达式没有名称,因为它表示匿名内部类。

lambda表达式的返回类型由编译器推断。

lambda表达式不能像方法一样有throws子句。

lambda表达式不能是泛型,而泛型在函数接口中定义。

使用方法

实例1

以下代码使用单一方法创建接口,并将其用作lambda表达式类型。当创建lambda表达式时,我们声明参数s1的类型为Integer类型。

public class Main {

  public static void main(String[] args) {
    MyIntegerCalculator myIntegerCalculator = (Integer s1) -> s1 * 2;

    System.out.println("1- Result x2 : " + myIntegerCalculator.calcIt(5));

  }
}
interface MyIntegerCalculator {

  public Integer calcIt(Integer s1);

}

上面的代码生成以下结果。

实例2

这里是没有使用类型的演示。当忽略类型时,编译器必须计算出来。

public class Main {

  public static void main(String[] args) {
    MyIntegerCalculator myIntegerCalculator = (s1) -> s1 * 2;

    System.out.println (myIntegerCalculator.calcIt(5));

  }
}
interface MyIntegerCalculator {

  public Integer calcIt(Integer s1);

}

上面的代码生成以下结果。

实例3

省略参数类型,如果选择省略参数类型,那么应该省略全部,不能部分省略。编译器根据上下文自动推断参数类型。

(x, y) -> { return x + y; }

实例4

对于单参数类型,可以省略括号

(msg)->{System.out.println(msg);}

msg -> { System.out.println(msg); }

实例5

对于没有参数的表达式,仍然需要括号

特殊说明 函数式

函数式编程是一种编程范式。它把计算当成是数学函数的求值,从而避免改变状态和使用可变数据。它是一种声明式的编程范式,通过表达式和声明而不是语句来编程。

一种典型的函数式接口如下:

Function 是种接受单个参数并返回结果的函数式接口.

一个典型的 Function 的实例化示例如下:

Function strLen = new Function<>() {

    @Override
    public Integer apply(String t) {
        return t.length();
    }

};
System.out.println("Function 示例, 字符串长度: " + strLen.apply("Hello"));

在 Java 中, 可以通过ambda 表达式来实现各种函数式接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LRY01127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值