lambda表达式的具体形式如下:接口名称=(int a)->{想要表达的式子;}
介绍lambda表达式之前首先回顾一下内部类(静态内部类、局部内部类、匿名内部类)
正常调用
package ThreadStudy.TestThread;
public class Testlambdademo01 {
public static void main(String[] args) {
test test = new test();
test.run();
}
}
interface slove{
void run();
}
class test implements slove{
@Override
public void run() {
System.out.println("我会跑了");
}
}
静态内部类、局部内部类、匿名内部类
package ThreadStudy.TestThread;
public class Testlambdademo01 {
// //静态内部类
// static class test implements slove{
// @Override
// public void run() {
// System.out.println("我会跑了");
// }
// }
public static void main(String[] args) {
//局部内部类
// class test implements slove{
// @Override
// public void run() {
// System.out.println("我会跑了");
// }
// }
//匿名内部类
// slove slove = new slove() {//注意匿名内部类没有类的名字,在这里只有接口的名字
//
// @Override
// public void run() {
// System.out.println("我会跑了44");
// }
// };
// slove.run();
//lambda表达式
slove slove = () -> {
System.out.println("333");
};
slove.run();
}
}
interface slove{
void run();
}
lambda表达式化简
package ThreadStudy.TestThread;
public class Testlambdademo02 {
public static void main(String[] args) {
//lambda表达式
// Love love = (int a) -> {
// System.out.println("我知道这是"+a);
// };
// love.see(5);
//1.去掉参数类型
// Love love=(a)->{
// System.out.println("我知道这是"+a);
// };
// love.see(5);
//2.去括号(只有一个参数的时候才可以去除括号)
Love love=a->{
System.out.println("我知道这是"+a);
};
love.see(5);
// 多参数的时候不能去掉()括号
Love love=(a,b)->{
System.out.println("我知道这是"+a);
System.out.println("这是"+b);
};
love.see(5,6);
//3.去掉花括号
// Love love=(a,b)-> System.out.println("我知道这是"+a+"和"+b);
//love.see(7,8);
/*
注意 lambda表达式只有一行的时候才能把花括号去掉(前提是接口为函数式接口),如果是多行的必须写在代码块中,如简化2
多参数可以去掉参数类型,要去掉就都去掉,但是得加上括号
*/
}
}
interface Love{
void see(int a,int b);
//多个参数
}
注意!!!
lambda表达式只有一行的时候才能把花括号去掉(前提是接口为函数式接口),如果是多行的必须写在代码块中,如简化2。
多参数可以去掉参数类型,要去掉就都去掉,但是得加上括号。
只有一个参数的时候才可以去除括号,多个参数必须加上括号。