Lambda表达式

本文详细介绍了Java中Lambda表达式的使用,通过实例展示了如何避免匿名内部类导致的代码复杂性。从定义函数式接口开始,逐步演示了普通类、静态内部类、局部内部类和匿名内部类的实现方式,最后过渡到Lambda表达式的简洁形式。同时,还展示了Lambda表达式的不同简化方式,包括省略参数类型、括号以及单行代码时省略花括号。强调了Lambda表达式的一行代码限制及函数式接口的重要性。
摘要由CSDN通过智能技术生成

Lambda表达式属于函数式编程且要使用Lambda必须是函数式接口(即只包含一个抽象方法的接口)。Lambda表达式的使用是为了避免匿名内部类定义过多,造成代码过于复杂。下面来推导Lambda表达式的简化过程:

  1. 定义一个函数式接口
interface ILike{
	void lambda();
}

  1. 若是不使用内部类和Lambda表达式我们就需要定义一个类继承这个接口
//2.实现类
class Like implements ILike{

	@Override
	public void lambda() {
		// TODO Auto-generated method stub
		System.out.println("I like lambda");
	}
}
  1. 我们也可以将这个类写在主类里面,就变成了内部类,内部类还可以分为静态内部类,局部内部类和匿名内部类。
public class testLambda1 {

	//3.静态内部类
	static class Like2 implements ILike{
		@Override
		public void lambda() {
			// TODO Auto-generated method stub
			System.out.println("I like lambda2");
		}		
	}
	
	public static void main(String[] args) {
		ILike like = new Like();
		like.lambda();
		
		like = new Like2();
		like.lambda();
		
		//4.局部内部类
		class Like3 implements ILike{

			@Override
			public void lambda() {
				// TODO Auto-generated method stub
				System.out.println("I like lambda3");
			}
	}
		like = new Like3();
		like.lambda();
		
		//5.匿名内部类,没有类的名称,必须借助接口或父类
		like = new ILike() {

			@Override
			public void lambda() {
				// TODO Auto-generated method stub
				System.out.println("I like lambda4");
			}
			
		};
		like.lambda();
	}
}
  1. 最后我们可以简华成Lambd表达式
//6.用lambda 表达式
		like = ()->{
			System.out.println("I like lambda5");
		};
		like.lambda();

Lambda表达式还有如下简化方式

interface ILove{//函数式接口
	void love(int a);
}

public class testLambda2 {
  
	public static void main(String[] args) {
		
		//1.lambda表达式简化
		ILove love = (int a)->{
			System.out.println("i love "+a);
		};
		
		//2.简化参数类型
		love = (a)->{
			System.out.println("i love "+a);
		};
		
		//3.简化括号
		love = a->{
			System.out.println("i love "+a);
		};
		
		//4.简华花括号(只有一行代码)
		love = (a)->System.out.println("i love "+a);
		
		//总结:
		//lambda表达式只能有一行代码的情况下才能简化花括号,多行的不行
		//接口必须式函数式接口
		//多个参数也可以去掉参数类型,要去掉都去掉,要加括号
		love.love(1);
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值