这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战
Lambda 无参、有参、有返回值、无返回值
public class Lambda03 {
public static void main(String[] args) {
/**
* 一个String入参
*/
LambdaInterface31 lambdaInterface31 = (String str) -> System.out.println("welcome:" + str);
lambdaInterface31.fun("Lambda.");
/**
* 两个String入参
*/
LambdaInterface32 lambdaInterface32 = (String name, int age) -> System.out.println(name + "今年" + age + "岁。");
lambdaInterface32.fun("小明", 3);
/**
* 两个int入参 带返回值
*/
LambdaInterface33 lambdaInterface33 = (int x, int y) -> {
int sum = x + y;
return sum;
};
int sum = lambdaInterface33.sum(2, 3);
System.out.println("2+3="+sum);
/**
* 无参数有返回值
*/
LambdaInterface34 lambdaInterface34 = () ->{
System.out.println("无参数有返回值");
return "无参数有返回值";
};
lambdaInterface34.fun();
}
}
interface LambdaInterface31 {
public void fun(String str);
}
interface LambdaInterface32 {
public void fun(String name, int age);
}
interface LambdaInterface33 {
public int sum(int x, int y);
}
interface LambdaInterface34 {
public String fun();
}
输出结果:
welcome:Lambda.
小明今年3岁。
2+3=5
无参数有返回值
函数一个参数或实现的函数体只有一行代码时函数可以简写
/**
* 一个String入参
*/
LambdaInterface31 lambdaInterface31 = (String str) -> System.out.println("welcome:" + str);
lambdaInterface31.fun("Lambda.");
/**
* 一个String入参
* 简写 省略String
*/
LambdaInterface31 lambdaInterface311 = (str) -> System.out.println("welcome:" + str);
lambdaInterface311.fun("Lambda311.");
/**
* 一个String入参
* 简写 省略String 和 ()
*/
LambdaInterface31 lambdaInterface312 = str -> System.out.println("welcome:" + str);
lambdaInterface312.fun("Lambda312.");
输出结果:
welcome:Lambda.
welcome:Lambda311.
welcome:Lambda312.
给定一个厨子cook接口,内含唯一的抽象方法makeFood,且无参数、无返回值。
使用Lambda的标准格式调用invokeCook方法,打印输出“吃饭啦!”字样
public class Demo01Cook {
public static void main(String[] args) {
//调用invoke Cook方法,参数是Cook接口,传递Cook接口匿名内部类对象
invokeCook(new Cook() {
@Override
public void makeFood() {
System.out.println("吃饭啦");
}
});
//使用Lambda表达式,简化匿名内部类方法
invokeCook(()->{
System.out.println("吃饭啦1");
});
}
//定义一个方法,参数传递cook接口,方法内部调用Cook接口中的方法makefood
public static void invokeCook(Cook cook){
cook.makeFood();
}
}
interface接口:
public interface Cook {
public abstract void makeFood();
}
lambda表达式在实际开发中其实很好使用,建议大家多实用lambda表达式,但是就是语法比较抽象,不容易懂。需要多使用才能掌握。