首页 > 编程语言 >Java中的Lambda详细解读

Java中的Lambda详细解读

时间:2023-04-27 21:13:23浏览次数:35  
标签:Java int void System display 解读 interface public Lambda

Lambda是JDK1.8新引进的简化代码语法格式,可以替代原先的匿名内部类,lambda写法只能实现接口的方法,不能用于实现抽象类实现。

//以下代码对比一下两者写法上的区别
interface Alarm{
	void display();
}
public class Lambda{
	public static void main(String[] args){
	Alarm a=new Alram(){
		@Override
		public void display(){
			System.out.println("我是匿名内部类实现的方法");
		}
	}
	//简化代码
	Alram b=()->System.out.println("我是lambda表达式实现的方法");
	}
}

语法

接口 变量名=(参数名称以及个数)->{实现方法};

//声明该接口为函数式接口 只能有一个抽象方法 多了编译会异常
@FunctionalInterface
interface AlarmNoArg{
	void display();
}
@FunctionalInterface
interface AlarmOneArg{
	String display(String one);
}
@FunctionalInterface
interface AlarmTwoArg{
	//publiv final 可缺省 可以定义常量
	public final int arg=1;
	//public abstract 可缺省
	public abstract int display(int a,int b);
}
//如果不加@FunctionalInterface注解 必须保证该接口只有一个抽象方法才能使用lambda表达式 某则会在编译时报错误
interface AlarmThreeArg{
	void display(int[] arr);
}
public class Example{
	public static void main(String[] args){
	AlarmNoArg a=()->System.out.prinln("一行代码可以省略{}");
	a.display();//使用时直接调用方法即可!

	AlarmOneArg b=(name)->name;
	//一行代码缺省{}情况下 可以直接返回值
	b.display(name);

	//两个参数 参数名随便写 符合java变量名规范就行
	//返回值不是void 写结构体{}必须写return
	AlarmTwoArg c=(a,b)->{return a+b;};
	c.display(1,2);

	//数组引用
	AlarmThreeArg d=(arr)->{
	//业务代码和匿名内部类实现一样
		for(int i:arr){
			System.out.println(i);
		}
	};//分号别忘啦
	d.display(new int[]{1,2,3,4})
	}
}

标签:Java,int,void,System,display,解读,interface,public,Lambda
From: https://www.cnblogs.com/odfive/p/17360205.html

相关文章

  • 每日打卡java字符串
    importcom.ith.demo1.main;importcom.ith.demo1.phone;importjava.util.ArrayList;importjava.util.Scanner;importjava.util.StringJoiner;//PressShifttwicetoopentheSearchEverywheredialogandtype`showwhitespaces`,//thenpressEnter.Youcannows......
  • Java练习题(一)
    1、下列程序编译或者运行的结果是(D)    Publicstaticvoidmain(Stringargs[]){         Inta=10;         Intb,c;         If(a>50){             b=9;}c=b+a;System.out.println(c);}       ......
  • java面试题--JMM
    一、说一下JAVA内存模型JMM分为哪几个区域?堆(GC堆):GC的主要区域。存放的是对象实例。 线程共享区域。方法区:也称为元数据区。存放是类的信息,包括类的类型,字段信息,方法信息等。线程共享区域。本地方法栈:存放native方法。线程私有区域。虚拟机栈:线程私有区域。程序计数器:线程......
  • (三) Java转义字符, 注释
    目录主要的转义字符注释主要的转义字符转义字符作用\t一个制表位,实现对齐的功能\n换行符\\输出一个\\"输出一个"\r一个回车,回车会默认到字符的前面,此时会替换原来的程序例子//演示转义字符publicclassChangeChar{ publicstaticvoidm......
  • Amazon S3 对象存储Java API操作记录(Minio与S3 SDK两种实现)
    缘起今年(2023年)2月的时候做了个适配AmazonS3对象存储接口的需求,由于4月份自学考试临近,一直在备考就拖着没总结记录下,开发联调过程中也出现过一些奇葩的问题,最近人刚从考试缓过来顺手记录一下。S3对象存储的基本概念S3是什么?AmazonS3(SimpleStorageService)对象存储出现......
  • Java设计模式-抽象工厂模式
    简介设计模式是软件设计中的一种常见方法,通过定义一系列通用的解决方案,来解决常见的软件设计问题。其中,抽象工厂模式是一种非常常见的设计模式,它可以帮助我们创建一组相关的对象,而不需要指定具体的实现方式。抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关的......
  • Java实现Unicode和中文相互转换
     Java中Unicode和中文相互转换1.什么是Unicode编码?2.中文加密[中文字符->Unicode字符]3.Unicode解码[Unicode字符->中文字符]4.测试案例1.什么是Unicode编码?快速了解什么是Unicode 2.中文加密[中文字符->Unicode字符] /***@Title:unicodeEncode......
  • Java把实体转为map对象
    方式一importorg.springframework.cglib.beans.BeanMap;BeanMap.create(entityObj); 方式二importcom.alibaba.fastjson.JSONObject;//方式1、强转为JSONObjectJSONObjectxxx=(JSONObject)JSONObject.toJSON(xxxEntity);//方式2、转成json,在转为mapStringjs......
  • Jenkins java程序占用内存大 优化
       Linux系统下使用top命令,再输入M按钮,按照内存排序每个进程,发现jenkins占据内存过大,如下:   解决方式输入命令vim/etc/sysconfig/jenkins编辑jenkins文件,修改JENKINS_JAVA_OPTIONS属性:原来的属性如下: JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"  ......
  • JDBC使用List和Map键值封装多表查询结果 java JDBC insert查询返回List对象
    JDBC使用List和Map键值封装多表查询结果https://www.cnblogs.com/zengyu1234/p/15451812.html查询结果的处理Java.sql.ResultSet接口是jdbcAPI中唯一用来封装查询结果记录行的组件。ResultSet接口唯一创建方式是通过执行SQL查询返回创建此对象 遍历结果集中数据truenext......