当前位置: 主页 > JAVA语言

java匿名内部类 final-Lambda表达式表达式

发布时间:2023-06-19 09:05   浏览次数:次   作者:佚名

目录

一、前言 1.什么是Lambda表达式

Lambda表达式是java1.8新特性,Lambda表达式是一种匿名函数,可以作为参数传递给其他函数或方法,并且可以在需要时动态创建,主要用途是简化代码。

2.为什么要使用Lambda表达式

使用lambda表达式的主要优点是代码简洁和可读性高。使用lambda表达式可以将一个函数作为数据传递给其他函数或方法,这种函数式编程的思想被广泛应用于现代编程中,可以使代码更加简洁,易于维护和重用。

另外java匿名内部类 final,使用lambda表达式可以避免冗长的代码java匿名内部类 final,因为它不需要显式地定义一个函数,而是直接嵌入到需要它的地方。这样就可以避免因为函数定义重复、命名相似等问题而导致的代码的可读性较差的问题。同时,lambda表达式可以提高代码的执行效率,因为它们能够减少因为创建对象和调用方法带来的额外开销。

二、了解Lambda表达式 1.Lambda的标准格式

在看到方法参数是接口的时候就可以使用Lambda表达式:

语法:( )->{ }

Lambda表达式就是一个匿名函数,而函数相当于java中方法。

语法解析

( ):参数列表,将参数写在括号内;

->:没有实际含义主要用于连接的作用;

{ }:方法体;

有参数的Lambda表达式,直接在()括号内写入即可。

详细要求查看4.使用Lambda表达式的前提条件

2.Lambda的底层原理

匿名内部类在编译的时候会生成一个class文件。

Lambda在程序运行的时候会形成一个类。

1.在类中会生成一个方法,而这个方法中的方法体就是Lambda表达式中的代码。

2.还会生成一个匿名内部类,实现接口,重写抽象方法。

3.在接口的重写方法中还会调用生成的方法。

java匿名内部类继承_java匿名内部类的使用_java匿名内部类 final

3.优化Lambda表达式

在lambda的基础上可以使用省略写法

1.小括号内参数类型可以省略不写。

2.如果小括号内有且仅有一个参数,则小括号可以不写。

3.如果大括号内有且仅有一个语句,则同时可以省略大括号、return关键字及语句分号

(int a)->{
    return new Person();
}
//优化
a->  new Person()

4.使用Lambda表达式的前提条件

虽然使用Lambda表达式语法非常简洁,但是lambda不是随随便便用的,使用时有几个条件需要特别注意:

1.方法中的参数或者局部变量的类型必须是接口。

2.接口中有且只有一个抽象方法。

package xw.lambda;
/**
 * @author xw
 *
 */
public class Test01 {
public static void main(String[] args) {
	//方法的参数或者局部变量类型必须为接口才能使用Lambda表达式
	ttt(()->{
		
	});
	
	
	Flyable f=()->{
		System.out.println("这就是Lambda表达式");
	};
	
	
}
public static void ttt(Flyable b) {
	
}
}

三、总结Lambda与匿名内部类的区别 1.所需的类型不一致

匿名内部需要的类型可以是类、抽象类、接口。

lambda表达式需要的接口只能是接口。

2.抽象方法的数量不同

匿名内部类所需接口中的抽象方法的数量随意。

lambda表达式所需接口中的抽象方法有且只有一个。

3.实现方法原理不同

匿名内部类是在编译后形成class。

lambda表达式是程序的运行的时候动态生成class。

当接口中只有一个抽象方法时,建议使用lambda表达式,其他情况还是建议使用匿名方式。

看到这里Lambda表达式的简单介绍就结束了,点个赞再走吧!!

java匿名内部类继承_java匿名内部类的使用_java匿名内部类 final