Lambda表达式,是匿名内部类的一种简写形式。
Lambda表达式的语法特点
1.Lambda表达式 引入了一个箭头符号 ->
2.箭头符号 -> 把Lambda表达式分成左右两部分
3.左边:写这个接口中的抽象方法的形参列表。
4.右边:你对这个接口中的抽象方法的具体的重写逻辑
定义一个接口如下:
package demo8;
public interface MyInterface {
public abstract void show();
}
测试类如下:
package demo8;
public class Mytest {
public static void main(String[] args) {
new MyInterface() {
@Override
public void show() {
System.out.println("show");
}
};
//lambda形式:
MyInterface MyInterface = () -> {
System.out.println("show");
};
}
}
Lambda的简写
接口如下:
package demo9;
public interface MyInterface {
public int test(String name,int age);
}
测试类如下:
package demo9;
public class Mytest {
public static void main(String[] args) {
//lambda形式:
//第一步简写
MyInterface myInterface = (String name,int age) -> {
return 10;
};
//第二步简写 形参的数据类型也可以省略不写
MyInterface myInterface1=(name,age)->{return 10;};
//第三次简写:如果你对接口中的抽象方法的具体实现逻辑,只有一行代码,可以省略return关键字和{}
MyInterface myInterface2=(name,age)->10;
}
}
函数式函数式接口:接口中只有一个抽象方法
一个函数式接口如下:
package demo10;
//可以检测这个接口是不是个函数式接口
@FunctionalInterface
public interface MyInterface {
public abstract int show(int a);
}
测试类如下:
package demo10;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.function.Consumer;
public class Mytest {
public static void main(String[] args) {
//当接口中只有一个抽象方法,才能使用Lambda表达式来简写。
//Lambda表达式之支持函数式接口:接口中只有一个抽象方法
// @FunctionalInterface 这个注解可以检测这个接口是不是个函数式接口
MyInterface myInterface=a-> a+100;
Integer[] arr={20,30,2,3};
//此处的比较器可以使用Lambda作为参数传递
Arrays.sort(arr,(a,b)->a-b);
System.out.println(arr);
Consumer<Integer> consumer=integer -> System.out.println(integer);
}
}
版权声明:本文为qq_44241861原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。