1. Lamda表达式
1.1 Lamda表达式的作用
- 避免匿名内部类过多
- 可是使代码看起来更简洁
- 去掉无意义代码,保留核心逻辑
2. Lamda表达式使用条件
- 理解Functional Interface(函数式接口)是学习Java8 lamda表达式的关键
- 函数接口的定义:任何接口,如果只包含一个文艺的抽象方法,那么它既是一个函数式接口;对于函数式接口,我们可以通过lamda表达式创建该接口对象。
2. Lamda表示是演变过程
1. 例1 从步骤1.--------》6.
package Demo03;
public class TestLamda1 {
static class Read2 implements Iread{
@Override
public void lamda() {
System.out.println("i reading nover2");
}
}
public static void main(String[] args) {
Read read = new Read();
read.lamda();
Read2 read2 = new Read2();
read2.lamda();
class Read3 implements Iread{
@Override
public void lamda() {
System.out.println("i reading nover3");
}
}
Read3 read3 = new Read3();
read3.lamda();
Iread read4 = new Iread(){
@Override
public void lamda() {
System.out.println("i reading nover4");
}
};
read4.lamda();
Iread read5 = ()->{
System.out.println("i reading nover5");
};
read5.lamda();
}
}
interface Iread{
public void lamda();
}
class Read implements Iread{
@Override
public void lamda() {
System.out.println("i reading nover1");
}
}
2. 例2 有参方法
package Demo03;
public class TestLamda2 {
public static void main(String[] args) {
class Read1 implements Iread1{
@Override
public void lamda(String a) {
System.out.println(a);
}
}
Read1 read1 = new Read1();
read1.lamda("nover1");
Iread1 read2 = (String a)->{
System.out.println(a);
};
read2.lamda("nover2");
Iread1 read3 =(a)->{
System.out.println(a);
};
read3.lamda("nover3");
Iread1 read4 = a->{
System.out.println(a);
};
read4.lamda("nover4");
Iread1 read5 = a-> System.out.println(a);
read5.lamda("nover5");
}
}
interface Iread1{
void lamda(String a);
}