1、什么是Lambda表达式
Lambda表达式是JAVA8中提供的一种新的特性,是一个匿名函数方法。可以把Lambda表达式理解为一段可以传递的代码,可以让你的代码更加优雅
2、Lambda表达式的前提条件
只有函数式接口的匿名内部类才可以使用Lambda表达式来进行简化。简单来说就是接口当中只有一个抽象方法是需要我们去实现的
3、使用方式
1)、我们先来看看我们之前的写法:
public interface NewPrinter {
public void print(); //接口中提供一个抽象方法
}
public class Test20 {
public static void main(String[] args) {
method(new NewPrinter() {
@Override
public void print() {
System.out.println("我是匿名内部类,正在执行print方法");
}
});
}
public static void method(NewPrinter printer){
printer.print();
}
}
2)、我们再来看看Lambda写法:
public class Test20 {
public static void main(String[] args) {
method(() -> System.out.println("我是Lambda表达式,正在执行print方法"));
}
public static void method(NewPrinter printer){
printer.print();
}
}
3)、可以发现,Lambda表达式极大的简化了代码,让代码变得优雅无比!那么既然接口中只有一个方法才可以使用Lambda,那么default方法和static方法可以写入吗?
public interface NewPrinter {
public void print();
default void test1(){}
static void test2(){}
}
我们将接口加上了默认方法后,发现可以成功执行,所以接口中允许存在默认和静态方法
4)、带参的接口Lambda
public interface NewPrinter {
public void print(String str);
default void test1(){
System.out.println(1);
}
static void test2(){
System.out.println(2);
}
}
public class Test20 {
public static void main(String[] args) {
method("123",e -> System.out.println(e));
}
public static void method(String str,NewPrinter printer){
printer.print(str);
}
}
当接口方法参数只有一个时,小括号也可以省略!
5)、带多个参数Lambda ?
public interface NewPrinter {
public void print(String str1,String str2);
default void test1(){
System.out.println(1);
}
static void test2(){
System.out.println(2);
}
}
public class Test20 {
public static void main(String[] args) {
method("Hello","\tLambda~",(e1,e2) -> System.out.println(e1+e2));
}
public static void method(String str1,String str2,NewPrinter printer){
printer.print(str1,str2);
}
}
6)、带返回值的Lambda
public interface NewPrinter {
public String print(String str1);
default void test1(){
System.out.println(1);
}
static void test2(){
System.out.println(2);
}
}
public class Test20 {
public static void main(String[] args) {
NewPrinter printer = e -> {
System.out.println(e);
return "我是返回值!";
};
String result = printer.print("Hello~Lambda~!");
System.out.println(result);
}
}
本电子书目录:《Java基础的重点知识点全集》