Lambda是Java1.8出现的新特性
它使得代码更加简洁,但是有时也会让看代码的人一脸懵逼…
我的理解是…在一定程度上,可以代替匿名内部类.
无参数的例子:
匿名内部类
public class Demo {
public static void main(String[] args) {
Test t = new Test() {
public void show() {
System.out.println("这是匿名内部类");
}
};
t.show();
}
}
interface Test {
public void show();
}
运行结果:
lambda表达式
(函数式接口)
public class Demo {
public static void main(String[] args) {
Test t = ()-> System.out.println("这是lambda表达式");
t.show();
}
}
interface Test {
public void show();
}
运行结果:
----------------------------------------我是一条分割线-------------------------------------------------
有参数的例子:
匿名内部类
public class Demo {
public static void main(String[] args) {
Test t= new Test() {
public void show(int x, int y) {
System.out.println("这是匿名内部类:"+ (x+y));
}
};
t.show(10,20);
}
}
interface Test {
public void show(int x, int y);
}
运行结果:
lambda表达式
(函数式接口)
public class Demo {
public static void main(String[] args) {
Test t = (a, b) -> System.out.println("lambda表达式:"+ (a+b));
t.show(10, 20);
}
}
interface Test {
public void show(int x, int y);
}
运行结果:
----------------------------------------我是一条分割线-------------------------------------------------
多条语句的例子:
匿名内部类
public class Demo {
public static void main(String[] args) {
Test t = new Test() {
public void show(String name, int age) {
System.out.println("这是匿名内部类");
System.out.println("name:"+name+", age: "+age);
}
};
t.show("小强", 18);
}
}
interface Test {
public void show(String name, int age);
}
运行结果:
lamdab表达式
(函数式接口)
多条语句的lambda表达式用大括号{} 括起来
public class Demo {
public static void main(String[] args) {
Test t = (name, age) -> {
System.out.println("这是lambda表达式");
System.out.println("name:" + name + ", age: " + age);
};
t.show("旺财", 21);
}
}
interface Test {
public void show(String name, int age);
}
运行结果: