函数式接口: 有且只有一个方法的接口
@FunctionalInterface public interface Runnable { public abstract void run(); }
简化编成模型 在新版本的框架底层大量应用
/* * Function 函数型接口 有一个输入参数 有一个输出参数 * 只要是函数式接口 都可以用lambda表达式简化 * * */ public class Demo01 { public static void main(String[] args) { Function function = new Function<String, String>() { @Override public String apply(String str) { return str+" ok"; } }; System.out.println(function.apply("it's")); Function<Integer,String> function2 =(str)-> {return str+ 666 +" ---NB";}; System.out.println(function2.apply(6000)); } }
断定型接口
/* * Predicate 断定型接口 有一个输入参数 返回是布尔值 * 只要是函数式接口 都可以用lambda表达式简化 * * */ public class Demo02 { public static void main(String[] args) { Predicate<String> predicate = new Predicate<String>() { @Override public boolean test(String str) { return str.isEmpty(); } }; // System.out.println(predicate.test("it's")); // System.out.println(predicate.test("")); Predicate<String> predicate2 = (str)->{ return str.isEmpty();}; System.out.println(predicate2.test("it's")); System.out.println(predicate2.test("")); } }
消费型接口
/* * Consumer 消费型接口 只有输入值 没有返回值 * */ public class Demo03 { public static void main(String[] args) { // Consumer<String> consumer = new Consumer<String>() { // // @Override // public void accept(String str) { // System.out.println("66666666"); // System.out.println(str); // // } // }; Consumer<String> consumer = (str) -> { System.out.println(str); }; consumer.accept("777777"); } }
供给型接口
/* * Supplier 供给型接口 没有参数 只有返回值 * */ public class Demo04 { public static void main(String[] args) { // Supplier<String> supplier = new Supplier<String>() { // // @Override // public String get() { // return "6666"; // } // }; Supplier<String> supplier = () -> { return "6666"; }; System.out.println(supplier.get()); } }