JAVA8新特性_01 Lambda And 函数式接口

一、Lambda表达式 (参数类型 参数名) -> {方法体}

Lambda表达式必须用于接口,且接口中公开的方法只有一个。

Lambda表达式只在意参数和方法体,不在意类名和方法名

Lambda表达式中如果参数可以把参数类型省略,如果参数只有一个 那么参数的括号也可以省略

省略前写法:(参数类型 参数名) -> {方法体}

省略后写法:一个参数: 参数名 -> {方法体} 《=====》 多个参数则是:(参数名,参数名,参数名)-> {方法体}

Lambda表达式中方法体如果只有一行代码,那么方法体括号也可以省略

参数名 -> System.out.print("哈哈哈") 这句代码和下面一样

参数名 -> {System.out.print("哈哈哈")}

Lambda表达式中方法体是需要返回值的,括号,return关键字,分号都可以省略

省略前:参数名 -> { return a==1; }

省略后:参数名 -> a==1

二、函数式接口

函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和 java.util.Comparator都是典型的函数式接口。 java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断, 但 最好在接口上使用注解@FunctionalInterface进行声明,以免团队的其他人员错误地往接口中添加新的方法。

Java中的lambda无法单独出现,它需要一个函数式接口来盛放,lambda表达式方法体其实就是函数接口的实现.

例如:

@FunctionalInterface    // 此注解就是标记此接口为函数式接口, 只能包含一个方法的接口,静态和默认方法除外!
public interface Car{
    void show();
}

下一篇:JAVA8新特性02 接口增强 And 方法引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8引入了Function接口和Lambda表达式,这些新特性使得函数式编程变得更加容易和灵活。 Function接口是一个函数式接口,它定义了一个接受一个参数并返回一个结果的函数。它有一个抽象方法apply(),这个方法接受一个参数并返回一个结果。Function接口有多个默认方法可以组合成复杂的函数链,比如andThen()和compose()方法。 Lambda表达式是一种可以代替匿名内部类的语法,它可以用来创建函数式接口的实例。Lambda表达式由三个部分组成:参数列表、箭头符号和方法体。Lambda表达式的参数列表和方法体可以根据上下文自动推断,这使得代码更加简洁易读。 下面是一个使用Function和Lambda表达式的示例代码: ``` Function<Integer, Integer> square = x -> x * x; int result = square.apply(5); // result = 25 ``` 这个代码定义了一个Function接口的实例square,它接受一个整数参数并返回它的平方。然后我们可以调用这个实例的apply()方法来计算5的平方,结果为25。 Lambda表达式可以用来代替匿名内部类,使得代码更加简洁易读。比如下面这个代码: ``` Runnable runnable = new Runnable() { @Override public void run() { System.out.println("Hello, world!"); } }; ``` 可以使用Lambda表达式来简化为: ``` Runnable runnable = () -> System.out.println("Hello, world!"); ``` 这个代码定义了一个Runnable接口的实例runnable,它的run()方法会输出一条消息。Lambda表达式的箭头符号左侧没有参数,因为run()方法不接受任何参数。箭头符号右侧的方法体只有一条语句,因此可以省略大括号和分号。 总之,Java 8的Function和Lambda表达式为函数式编程带来了更加灵活和易用的工具,使得Java程序员可以更加方便地编写函数式风格的代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值