首页 > 其他分享 >lamdba表达式

lamdba表达式

时间:2023-10-31 19:04:33浏览次数:31  
标签:void lamdba System ilike println 表达式 out


lamdba表达式是为了避免匿名内部类定义过多

为什么要使用lambda表达式

  1. 避免匿名内部类定义过多
  2. 可以让你的代码看起来很简洁
  3. 去掉了一堆没有意义的代码,只留下核心的逻辑。
package com.xh.Thread;

/**
 * lamdba 表达式事实上是内部接口
 * 
 */
public class LamdbaTest {
	//3,定义一个静态内部类 
	static class Like2 implements Ilike{

		@Override
		public void lamdba() {
			System.out.println("I like lamdba2");
		}
		
	}
	public static void main(String[] args) {
		Ilike ilike = new Like();
		ilike.lamdba();
		
		ilike = new Like2();
		ilike.lamdba();
		
		
		//4 局部内部类
		class Like3 implements Ilike{

			@Override
			public void lamdba() {
				System.out.println("I like lamdba3");
			}
			
		}
		ilike = new Like3();
		ilike.lamdba();
		
		//5匿名内部类
		ilike = new Ilike() {
			@Override
			public void lamdba() {
				System.out.println("I like lamdba4");
			}
		};
		ilike.lamdba();
		
		//6用lamdba简化  对比一下省略部分代码
		ilike = ()->{
			System.out.println("I like lamdba5");
		};
		ilike.lamdba();
	}
}

//定义一个函数接口
interface Ilike{
	void lamdba();
}

//实现类
class Like implements Ilike{
	@Override
	public void lamdba() {
		System.out.println("I  Like  lamdba ");
	}
}

lamdba表达式_ide


说明lamdba表达式在此发挥了作用。

ilike = ()->{
 System.out.println(“I like lamdba5”);
 }
package com.xh.Thread;

//局部内简化变成匿名内部类
public class LamdaTest02 {
	
	//定义一个全局内部类
	static class Face1 implements IFace{
		@Override
		public void face(int a) {
			System.out.println("也就是吧外部类移动到外部类-->" + a);
		}
	}
	
	public static void main(String[] args) {
		IFace iFace = new Face();
		iFace.face(2);
		
		Face1 face1 = new Face1();
		face1.face(111);
		
		//来一个局部内部类
		class Face2 implements IFace{
			@Override
			public void face(int a) {
				System.out.println("我是局部内部类-->" +a );
			}
		}
		Face2 face2 = new Face2();
		face2.face(110);
		
		//在一步简化变成匿名内部类
		iFace =(int a)-> {
			System.out.println("我是lamda1号-->" +a);
		
		};
		
/*		//简化1,参数类型
		iFace =(a)-> {
			System.out.println("我是lamda1号-->" +a);
		};
		
		iFace =(a,b)-> {
			System.out.println("我是lamda1号-->" +a);
			System.out.println("我是lamda2号-->" +a;)
		};
		
		//简化2.简化括号
		iFace = a-> {
			System.out.println("我是lamda1号-->" +a);
		};*/
		
		//简化3,去掉花括号
		iFace = a-> 
			System.out.println("我是lamda2号-->" +a);
			//总结 
			//lambda 表达是只能有一行代码的情况下才能简化为一行,如果有多行,那么就用代码块包裹
			//提前需要接口为函数式接口
			//多个参数也可以去掉参数类型,要去掉就都要去掉,必须加上括号
		iFace.face(520);
		}
	}

//重要。这个必须要有
interface IFace{
	void face(int a);
	// void face (int a,int b);
}


class Face implements IFace{
	@Override
	public void face(int a) {
		System.out.println("注意实现接口必须要重写接口里边的方法 --->" + a);
	}
	
}


标签:void,lamdba,System,ilike,println,表达式,out
From: https://blog.51cto.com/u_16330533/8112764

相关文章

  • Kotlin: 高阶函数与Lambda表达式 (转)
    Kotlin:高阶函数与Lambda表达式(转)本文转自:https://rengwuxian.com/kotlin-lambda/看到一篇写得不错的关于kotlin高阶函数与Lambda的博文,特转载之。1.Kotlin的高阶函数Kotlin很方便,但有时候也让人头疼,而且越方便的地方越让人头疼,比如Lambda表达式。很多人因为Lamb......
  • 字符串表达式计算(a+b/(a-b))的思路与实践
    前言为满足业务需要,需要为项目中自定义模板添加一个计算字段的组件,通过设置字符串表达式,使用时在改变表达式其中一个字段的数据时,自动计算另外一个字段的值。本篇为上篇,介绍原理,简单实现一个工具,输入字符串表达式,解析其中的参数,输入参数计算结果。下篇将基于此封装实现对Mongo......
  • 逆波兰表达式
    classSolution{publicintevalRPN(String[]tokens){Stackst=newStack();booleanflag=true;intval=0;for(inti=0;i<tokens.length;i++){if("+".equals(tokens[i])){......
  • Java21的新表达式类型-模板表达式
    大家好,我是老七,点个关注吧,将持续更新更多精彩内容!在Java编程语言里,模板表达式这个新玩意儿给大家带来了全新的表达式类型。这篇文章会给大家详细讲解模板表达式是什么,如何用它,以及通过具体的代码示例来展示它的优点。什么是模板表达式模板表达式是Java21里新出的一个表达式类型。它......
  • Visual Studio 2022 正则表达式
    VisualStudio2022支持使用正则表达式进行搜索和替换操作。在搜索框中,可以点击“正则表达式”按钮来启用正则表达式模式。下面是一些常用的正则表达式示例:匹配数字:\d匹配字母:[a-zA-Z]匹配空格:\s匹配任意字符:.匹配一个或多个字符:+匹配零个或多个字符:*匹配起始位置:^匹配......
  • 常用正则表达式
    一、正则表达式语法1.元字符字符匹配符选择匹配符限定符定位符分组组合和反向引用符元字符(Metacjaracter)-转义号\\\\符号 说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错。特殊:在Java的正则表达式中,两个\\代表其他......
  • 正则表达式
     关于正式表达式参考资料:http://events.jianshu.io/p/dc3dfb98dfbb   查找匹配类的规则标识符解释示例^匹配行首 $匹配行末 \<匹配词首 \>匹配词末 ^$匹配空行 \B匹配非边界aajavabb; 用法可以是:\Bjava,java\B,\Bjava\B......
  • 拉姆达表达式
    拉姆达表达式(LambdaExpression)是一种匿名函数,它允许开发者在代码中快速定义简单的函数。Lambda表达式通常用于简化代码逻辑,特别是在处理集合和流时。Lambda表达式的语法如下:(parameters)->expression其中,`parameters`是参数列表,可以有零个或多个参数;`->`是箭头符号,用于......
  • JAVA中char类型加减乘除运算表达式返回类型
    我们都知道java中,如果char类型和int类型做加减法,那么char类型会被精度提升至int类型然后参与运算,返回的也是int类型的数据。那么如果表达式中参与运算的均为char类型,那么表达式返回的类型是什么呢?'A'-'a'经过简单测试,是int类型。charc='w';sb.append('A'+c-'a');......
  • java如何从Content-Disposition获取文件名的正则表达式
    一,主要是关于:post请求下载文件,如何从Content-Disposition获取文件名的正则表达式记录:HttpResponsehttpResponse=httpRequest.execute();byte[]bytes=httpResponse.bodyBytes();Stringheader=httpResponse.header("Content-Disposition")......