Lamda表达式
- λ希腊字母表中排序第是一位的字母,英语名称为Lambda
- 避免匿名内部类定义过多
- 其实质属于函数式编制的概念
(params)→expression[表达式] (params)→statement[语句] (params)→{statements}
new Thread ((->System.out.printlm("多线程学习")).start();
- 为什么要使用lambda表达式
- 避免匿名内部类定义过多
- 可以让你的代码看起来更简洁
- 丢掉一堆没有意义的代码,只留下核心的逻辑 理解Functional lnterface(函数式接口)是学习Java8 lambda表达式的关键所在
- 函数式接口的定义:
- 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
- 对于函数式接口,我们可以通过lambda表达式来创建接口的对象
public static void main(String[] args) { Ilove love=null; love = a -> { System.out.println("i love you->" + a); }; love.love("zt"); } interface Ilove { void love(String a); } }
总结
- lambda表达式只有一行代码的情况下才能简化成一行,如果有多行则需要使用代码块
- 前提是接口为函数式接口,方法只能有一个
- 多个参数也可以去掉参数类型,要去掉就都去掉,但要加括号love=(a,b)->
静态代理
- 你:真实角色
- 婚庆公司:代理你,帮你处理结婚的事
- 结婚:实现都实现结婚接口即可
public static void main(String[] args) { wedding wedding = new wedding(new you()); wedding.happy(); } } interface Mraay{ void happy(); } //真实角色:你去结婚 class you implements Mraay{ @Override public void happy() { System.out.println("结婚了"); } } //代理角色:帮助你结婚 class wedding implements Mraay{ //代理谁 private Mraay target; public wedding(Mraay target) { this.target = target; } @Override public void happy() { before(); this.target.happy();//这就是真实的对象 after(); } private void before(){ System.out.println("结婚前"); } private void after(){ System.out.println("结婚后"); } }
静态代理模式总结
- 真实对象和代理对象都要实现同一个接口
- 代理对象要代理真实角色 所以需要一个参数来传入
- 好处:代理对象可以做很多真实对象做不了的事情,真实对象只专注自己的事情
- 婚庆公司==Thred
- run()用线程的对象,调用的方法及run()在这里就是lambda表达式的实现方法