Lambda表达式

本文通过对比Java中创建外部类、静态内部类、匿名内部类和使用Lambda表达式的方式,展示了Lambda如何简化代码并提高可读性。Lambda表达式在JDK8中引入,特别适用于只需使用一次且具有简单方法的类。
  • λ希腊字母表中排序第十一位的字母,英语名称为Lambda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编程的概念
  • 在这里插入图片描述
    当我们只想使用一次某个类的时候我们可以把它定义成一个外部类或内部类,更好的是定义为静态内部类,这样子它不会立即加载,而是在我们想要使用它的时候对外部内实例化然后再进行加载;还可以用局部内部类的方式将要使用的类定义在方法里面进行调用,但是对于这些只使用一次的类而且只有一个简单的方法的类这样子未免太繁琐了,所以JDK8提出了lambda表达式进一步简化我们的代码。
    为了更加深刻的体验一下lambda带给我们的快感,我们来手撸一下
    采用创建外部类的方式
public class demo {
public static void main(String[] args) {
	ILambda test = new LambdaImpl();
	test.likeLabmda();
}
}
//定义接口
interface ILambda{
	//需要实现的方法
	void likeLabmda();
}
//第一种方式:使用外部类
class LambdaImpl implements ILambda{

	@Override
	public void likeLabmda() {
		System.out.println("只要一次你就会爱上这种赶脚");
		
	}}

第二种采用静态内部类的方式

//定义接口
interface ILambda{
	//需要实现的方法
	void likeLabmda();
}
public class demo {
	//定义成静态内部类
	public static class LambdaImpl implements ILambda{
		@Override
		public void likeLabmda() {
			System.out.println("只要一次你就会爱上这种赶脚");
			
		}
	}
public static void main(String[] args) {
		ILambda inst = new LambdaImpl();
		inst.likeLabmda();
	}
}

使用匿名内部类的方式(在main方法那里和静态内部类不用)

//定义接口
interface ILambda{
	//需要实现的方法
	void likeLabmda();
}
public class demo {
public static void main(String[] args) {
		new ILambda() {
			
			@Override
			public void likeLabmda() {
				System.out.println("只要一次你就会爱上介肿赶脚");
			}
		}.likeLabmda();;
	}
}

采用lambda表达式

//定义接口
interface ILambda{
	//需要实现的方法
	void likeLabmda();
}
public class demo {
public static void main(String[] args) {
		ILambda inst =()-> {
			System.out.println("只要一次你就会爱上介肿赶脚");
		};
		inst.likeLabmda();
}
}

是不是发现我们的代码越来越少,结构还很清晰。更让人兴奋的是lambda表达式还可以更简化,简化到它妈都不认识的那种;
刚刚是没有参数的,它只有一行代码我们还可以把花括号去掉,两行不行。

ILambda inst =()-> System.out.println("只要一次你就会爱上介肿赶脚");

如果有一个参数呢?

ILambda inst =(int a)-> System.out.println("a");
//可以把类型去掉
ILambda inst =(a)-> System.out.println("a");
//还可以把小括号去掉
ILambda inst =a-> System.out.println("a");

两个参数就不能去掉参数了,但是可以省略类型,直接上变量名。
PS:大家好,我是学习JAVA两年半的练习生小虾我会弹唱rap,如有错误或者不得当的地方希望大家指出,music!!!。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值