定义一个接口如下:
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"); }; } }接口如下:
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); } }