一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情。
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表达式的实现方法