【Java8新特性】- Lambda表达式

Java8新特性 - Lambda表达式

生命不息 , 写作不止 继续踏上学习之路 , 学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德分享学习心得 , 欢迎指正 , 大家一起学习成长!

【Java8新特性】- Lambda表达式

文章插图
简介Lambda 表达式(lambda expression)是一个匿名函数 , Lambda表达式基于数学中的λ演算得名 , 直接对应于其中的lambda抽象(lambda abstraction) , 即没有函数名的函数 。Lambda表达式可以表示闭包(注意和数学传统意义上的不同) 。这是来自百度百科对lambda的介绍 , 实际上lambda就是简化了匿名函数的编写 , 只需一行代码就能代替繁杂的代码 。lambda主要是可以非常简洁的形式调用我们的匿名函数接口 。
简单例子首先声明一个接口 , 并且编写实现类实现这个接口
// UserServicepublic interface UserService {    void add();}// UserServiceImplpublic class UserServiceImpl implements UserService {    @Override    public void add() {        System.out.println("UserServiceImpl --- add");    }}一般来说是通过new实现类从而拿到实现中的add方法 , 如果通过new接口类就需要使用匿名内部类的形式调用接口 。IDEA会提示使用lambda表达式 。
【Java8新特性】- Lambda表达式

文章插图
如下代码可以看一下对比 。
【【Java8新特性】- Lambda表达式】public static void main(String[] args) {    UserService userService = new UserServiceImpl();    userService.add();    UserService user = new UserService() {        @Override        public void add() {            // 匿名内部接口业务逻辑            System.out.println("匿名内部接口业务逻辑");        }    };    // Lamdba表达式    UserService user2 = () -> System.out.println("匿名内部接口业务逻辑");    user2.add();}Lambda表达式的规范Java中的Lambda表达式的规范 , 必须是为函数接口 。
使用函数式接口使用Lambda表达式依赖于函数式接口:1、使用@FunctionalInterface注解来声明函数接口2、在这个函数接口中只能有一个抽象方法3、在函数接口中可以定义object类中的方法4、可以有静态方法*函数式接口(Functional Interface) 就是一个有且仅有一个抽象方法 , 但是可以有多个非抽象方法的接口 。更多函数式接口可以查看菜鸟联盟:https://www.runoob.com/java/java8-functional-interfaces.html
函数式接口的定义通过@FunctionalInterface注解声明接口类 , 在java中也有许多内置的函数接口 , 详情看菜鸟联盟 。
@FunctionalInterface // 声明函数式接口public interface UserService {    void add();    String toString(); // Object类中的方法    static void hello() { // 静态方法        System.out.println("hello");    }}

经验总结扩展阅读