java匿名类和匿名函数的概念和写法

前言

Lambda流式操作是Java8中重要的特性,lambda表达式核心概念为 函数式接口::-> 等基本语法,可以大大减少代码量的编写,使代码更加优雅

  1. 只有一个抽象函数的接口,就是函数式接口
  2. :: 可以称之为域运算符,主要是用来获取方法
  3. -> 的语法为 (变量或参数)->{代码体},是匿名函数的写法。也叫变量和代码的分隔符
  4. 当只获取一个方法属性的时候 :: 和 -> 可以通用

介绍

接口:

  • 接口可以定义在另一个类的内部
  • 接口中的方法都是抽象方法
  • 接口中的常量都是静态常量

类:

  • 类可以定义在另一个类的内部
  • 也可以定义为内部静态类,使用 static 关键字
  • 还可以定义为局部内部类,定义在方法中

一、什么是Lambda表达式?

        lambda表达式是为了简写代码的写法

二、什么是函数式接口?

        只有一个抽象方法的接口就是函数式接口

//1.定义一个函数式接口。只有一个抽象方法的接口就是函数式接口
interface ILike{
    void testLambda();
}

三、什么是匿名内部类?

  1. 没有类名
  2. 必须借助接口或父类
  3. 通过实例化函数式接口就可以完成匿名内部类实现此接口并重写方法
//5.匿名内部类,没有类名称,必须借助接口
like = new ILike() {
    @Override
    public void testLambda() {
        System.out.println("i like lambda4");
    }
};
like.testLambda();


四、用 Lambda 简化匿名内部类的写法

  1. 匿名内部类是为了省去类名的写法
  2. Lambda 简化写法不但可以省去类名,还可以省去接口名和函数名。因为只有一个抽象方法,可以直接实现并指向这个抽象方法和方法体
//6.用lambda简化,因为接口中只有一个函数,所以可以直接省略实例化的接口名和函数名
like = () -> {
    System.out.println("i like lambda5");
};
like.testLambda();

结论

  1. 匿名函数写法和匿名类写法的前提必须基于函数式接口
  2. 匿名函数写法和匿名类写法其本质是同一个东西,只是简化写法不同
  3. 使用Lambda表达式简写匿名函数时,可以同时省略实现类名、函数名。除此外也可以使用传统写法
     

猜你喜欢

转载自blog.csdn.net/m0_69057918/article/details/131108142