Lambda表达式
标准格式由三部分组成:
一些参数
一个箭头
一段代码
即:(参数类型 参数名称)->{ 一些重写方法的代码 }
格式说明:
():接口中的抽象方法的参数列表;无参数则留空;多个参数则用逗号分隔
-> : 传递的意思,把参数传递给方法体{}
{} : 重写的抽象方法的方法体
1、无参的应用案例
public interface Cook {
public abstract void makeFood();
}
public class LambdaDemo07 {
public static void main(String[] args) {
//调用invokeCook方法,参数是cook接口,传递cook接口的匿名内部类对象
invokeCook(()->{
System.out.println("我爱做饭饭");
});
}
//定义一个方法,参数传递cook接口,方法内部调用cook接口中的方法makefood
public static void invokeCook(Cook cook){
cook.makeFood();
}
}
2、有参有返回值案例1
public class Person {
private String name;
private Integer age;
public Person() {
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class Demo08Arrays {
public static void main(String[] args) {
Person[] arr = {
new Person("aa",19),
new Person("bb",27),
new Person("cc",24)
};
Arrays.sort(arr,(Person o1, Person o2)->{
return o1.getAge()-o2.getAge();
});
for (Person person : arr) {
System.out.println(person);
}
}
}
2、有参有返回值案例2
public interface Calculator {
public abstract int calc(int a,int b);
}
public class Demo09Main {
public static void main(String[] args) {
/*invokeCalc(2, 3, new Calculator() {
@Override
public int calc(int a, int b) {
return a+b;
}
});*/
invokeCalc(2, 3,(int a, int b)->{return a+b;});
}
private static void invokeCalc(int a,int b,Calculator calculator){
int result = calculator.calc(a, b);
System.out.println("结果是"+result);
}
}