Lambda表达式学习总结

为什么使用Lambda表达式

1.避免匿名内部类定义过多
2.让代码开起来更简洁
3.让程序员只关注核心方法的逻辑实现

什么情况下可以使用Lambda表达式

1.只有函数式接口才可以使用Lambda表达式
函数式接口:有且只有一个抽象方法的接口;
例如:Java多线程中Runable就是一个函数式接口,所有继承Runable接口的类都必须实现其run()方法,这些类可以作为一个单独的线程来执行操作,例如Thread线程类就是继承自Runable接口。

@FunctionalInterface
public interface Runnable {
    public abstract void run();
}

我们在创建一个线程的时侯就可以使用lambda表达式,我们知道如果可以给Thread传入一个实现Runable接口的实现类来创建一个线程。
所以我们可以用lambda表达式这样写代码:

new Thread(()->{System.out.println("重写run方法")});

2.Lambda表达式的代码格式
(param)->{ 方法 }
param为函数式接口内抽象方法的参数,参数可以省略参数类型,原则是如果有多个参数,要省则都省略。方法体中如果只有一句也可以不需要花括号{} , 它会返回一个实现了函数式接口方法的实例对象。

Lambda表达式使用示例

本示例使用了五种方法实现:外部类、静态内部类、局部内部类、匿名内部类、Lambda表达式实现结果是一样的,但是lambda表达的三点优势很容易在这个例子中得以体现。

public class TestLambda{
	//方法二 定义一个静态内部类
	static class myLuck2 implements Luck{
		@Override
		void lambda(int num){
			System.out.println("我的幸运数字是"+num)
		}
	}
	public static void main(String[] args){
		//方法一 使用外部定义的类 输出 我的幸运数字是1
		Luck luck1 = new myLuck1();
		luck1.lambda(1);
		
		//方法二 使用内部静态定义的类 输出 我的幸运数字是2
		Luck luck2 = new myLuck2();
		luck2.lambda(2);
		
		//定义局部内部类
		class myLuck3 implements Luck{
			@Override
			void lambda(int num){
				System.out.println("我的幸运数字是"+num)
			}
		}
		//方法三 使用局部内部类 输出 我的幸运数字是3
		Luck luck3 = new myLuck3();
		luck2.lambda(3);

		//方法四 使用匿名内部类,类没有名称,必须借助接口或者父类来创建
		Luck luck4 = new Luck(){
			@Override
			void lambda(int num){
				System.out.println("我的幸运数字是"+num)
			}
		}
		//输出 我的幸运数字是4
		luck4.lambda(4);

		//方法五 使用lambda表达式 输出 我的幸运数字是5
		//该方法只有一句代码和一个参数 所以可以进一步简化为 num->System.out.println("我的幸运数字是"+num);
		Luck luck5 = (num)->{System.out.println("我的幸运数字是"+num);}
		luck5.lambda(5)
	}
	
}

//定义一个函数式接口
interface Luck{
	void lambda(int num);
}
//方法一 实现函数式接口
class myLuck1 implements Luck{
	@Override
	void lambda(int num){
		System.out.println("我的幸运数字是"+num)
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值