2026/4/18 15:56:38
网站建设
项目流程
苏州好的做网站的公司,小白学剪辑从哪里开始,学做网站最好的网站,长治建网站前言在上一篇关于内部类的讨论中#xff0c;我们提到了一种特殊的内部类形式——匿名内部类#xff0c;它允许在定义类的同时直接创建对象。而Lambda表达式实际上是一种更简洁的替代写法#xff0c;当满足特定条件时#xff0c;它就可以用来简化匿名内部类的使用。一、Lamb…前言在上一篇关于内部类的讨论中我们提到了一种特殊的内部类形式——匿名内部类它允许在定义类的同时直接创建对象。而Lambda表达式实际上是一种更简洁的替代写法当满足特定条件时它就可以用来简化匿名内部类的使用。一、Lambda表达式是什么Lambda表达式是一种匿名函数它有着自己的一套固定写法实际上就是对原本的匿名内部类的简化允许你在需要的地方更加简洁地定义一个函数而无需正式声明一个函数。Lambda表达式是一种对接口的实现而且要求这个接口必须为函数型接口。所谓函数型接口就是只有一个抽象方法的接口。二、Lambda表达式的语法2.1 语法Lambda表达式是Java 8引入的一种匿名函数实现方式它提供了一种更简洁的方式来编写函数式接口的实现。Lambda表达式的语法实现接口类型 引用 参数列表- { //方法实现 }这是Lambda表达式的基本实现是一个固定格式但是我们可以对这个格式进行一些简化这些我们在第三部分详细总结。2.2 举例分析下面我举一个例子来帮助我们理解对它的使用例如现在我给你一个“灯”的函数型接口如下interface Light{ void shine(String light); }我们可以在main方法中使用Lambda表达式来进行匿名内部类的书写同时创建对应的对象Light light new Light(String color){ //控制台输入颜色 System.out.println(请输入颜色); color sc.nextLine(); //判断进行输出 if (color.equals(green)){ System.out.println(green); }else if (color.equals(yellow)){ System.out.println(yellow); } };我们现在按照Lambda表达式的格式对这个匿名内部类进行书写就可以是这样的Light light (String color) - { //控制台输入颜色 System.out.println(请输入颜色); color sc.nextLine(); //判断进行输出 if (color.equals(green)){ System.out.println(green); }else if (color.equals(yellow)){ System.out.println(yellow); } };这是初步的写法但一般我们会将其简化着使用。三、Lambda表达式的精简用法这里给出一个接口以及对应的匿名内部类写法下边拿这个来举例子//接口 interface IB{ void eat(String food); } //实现 IB ib (String food) - { System.out.println(吃 food) };3.1 方法实现的花括号当方法实现只有一条语句时花括号可以省略例如//Lambda表达式 IB ib (String food) - System.out.println(吃 food);3.2 参数列表里的参数类型参数类型可以省略例如上边的例子//Lambda表达式 IB ib (food) - System.out.println(吃 food);3.3 参数列表外的当参数只有一个时参数列表外的可以省略例如//Lambda表达式 IB ib food - System.out.println(吃 food);3.4 {}和return当方法的实现只有一行return时{}和return可以一起省略例如//Lambda表达式 IB ib food - return 吃 food; //Lambda表达式 IB ib food - 吃 food;有一种情况当返回值只有一层判断我们可以直接使用三目运算来达到只有一行return从而简化例如//实现 IC ic food - { if(food.equals(牛排)){ return 是牛排; }else{ return 不是牛排; } } //Lambda表达式 IC ic food - food.equals(牛排) ? 是牛排 : 不是牛排;3.5 输出的高级用法如果我们要输出的值就是我们传入的那个参数那么我们可以像下边这样写//实现 IA a1 color - System.out.println(color); //Lambda表达式 IA a1 Systrm.out::println;总结所以我们第二部分中的那个Lambda表达式可以简化为下边这种写法//控制台输入颜色 System.out.println(请输入颜色); color sc.nextLine(); Light light color - color.equals(green)?green:yellow; System.out.println(light);