Java中的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();

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

原文链接:https://www.cnblogs.com/odfive/p/17360205.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的Lambda详细解读 - Python技术站

(0)
上一篇 2023年4月27日
下一篇 2023年4月27日

相关文章

  • 基于JavaScript实现通用tab选项卡(通用性强)

    下面是实现通用tab选项卡的完整攻略: 1. 准备工作 1.1 HTML结构 首先,我们需要在HTML中设置选项卡的结构。一般情况下,选项卡通常由以下HTML元素组成: <ul class="tab"> <li><a href="#" class="tab-link active…

    Java 2023年6月15日
    00
  • Android指纹解锁方法解析

    Android指纹解锁方法解析 简介 在 Android 6.0(API level 23)及以上版本中,Google 加入了指纹识别技术,让 Android 设备拥有了指纹解锁的功能。在 Android 开发中,可以通过使用指纹解锁 API 来实现指纹解锁功能。本攻略将详细介绍如何在 Android 应用中使用指纹解锁 API 实现指纹解锁功能。 指纹解锁…

    Java 2023年5月26日
    00
  • 利用Spring boot如何创建简单的web交互应用

    使用Spring Boot创建简单的Web交互应用的完整攻略如下: 创建Spring Boot项目 首先,我们需要创建一个Spring Boot项目。可以使用Spring Initializr来创建一个新的Spring Boot项目。以下是创建Spring Boot项目的步骤: 打开Spring Initializr网站,选择项目的类型和语言,然后点击Gen…

    Java 2023年5月15日
    00
  • Spring Boot2.x集成JPA快速开发的示例代码

    Spring Boot2.x集成JPA快速开发的示例代码 在Spring Boot应用程序中,我们可以使用JPA(Java Persistence API)来快速开发数据库相关的应用程序。本文将详细讲解Spring Boot2.x集成JPA快速开发的完整攻略,并提供两个示例。 1. 添加JPA依赖 在pom.xml文件中添加以下依赖: <depende…

    Java 2023年5月15日
    00
  • Java实现简易Web服务器

    Java实现简易Web服务器 概述 Web服务器是Web应用程序运行的基础设施之一。本文将介绍如何使用Java编程语言实现一个简单的Web服务器,并提供两个简单的示例说明,帮助理解如何使用此Web服务器。 实现流程 获取客户端请求,解析请求报文,获取客户端请求的资源路径和参数。 判断客户端请求所需资源的类型,是静态资源还是动态资源。 如果是静态资源,则根据资…

    Java 2023年5月18日
    00
  • java的Hibernate框架报错“ConstraintViolationException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“ConstraintViolationException”错误。这个错误通常是由于以下原因之一引起的: 违反了数据库约束:如果您尝试插入或更新数据时违反了数据库约束,则可能会出现此错误。在这种情况下,需要查看数据库约束并解决问题。 数据库事务问题:如果您尝试插入或更新数据时存在事务问题,则可能会出现此错误…

    Java 2023年5月4日
    00
  • SpringBoot内置数据源的持久化与解决方案

    SpringBoot内置数据源的持久化与解决方案 SpringBoot提供了基于内置数据源的快速开发方式,但在某些情况下我们需要对数据源进行持久化,即在服务重启后仍然可以使用之前的数据源,这就需要对数据源进行持久化操作。本文将详细介绍SpringBoot内置数据源的持久化与解决方案。 SpringBoot内置数据源 SpringBoot内置了三种依赖库支持数…

    Java 2023年5月20日
    00
  • windows环境下java开发工具maven的安装教程图解

    Windows环境下Java开发工具Maven的安装教程图解 Maven是一款开源的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息化管理。本文将详细介绍在Windows环境下安装Maven的步骤及图解。 准备工作 在安装Maven之前,需要确保以下环境已经准备好: Java运行环境已经安装并配置好环境变量 网络连接正常,可以访问Maven的官方…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部