只有一个方法的接口叫做函数式接口。 Function、Predicate、Consumer、Supplier
函数式接口的作用:简化编程模型,在新版本的框架底层大量应用!
1 2 3 4 5 @FunctionalInterface public interface Runnable { public abstract void run () ; }
Function 函数型接口:有一个输入参数,有一个输出。
源码:
1 2 3 4 5 6 7 8 9 10 11 @FunctionalInterface public interface Function <T , R > { R apply (T t) ; }
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public static void main (String[] args) { Function function = new Function<String, String>() { @Override public String apply (String string) { return string; } }; System.out.println(function.apply("hello" )); } public static void main (String[] args) { Function<String, String> function = (str) -> { return str; }; System.out.println(function.apply("hello" )); }
结果:
Predicate 断定型接口:有一个输入参数,返回值只能是布尔值。
源码:
1 2 3 4 5 6 7 8 9 10 11 12 @FunctionalInterface public interface Predicate <T > { boolean test (T t) ; }
代码示例:
1 2 3 4 5 6 7 8 9 10 public static void main (String[] args) { Predicate<String> predicate = (str) ->{ return str.isEmpty(); }; System.out.println(predicate.test("11" )); }
结果:
Consumer 消费型接口:只有输入,没有返回值。
源码:
1 2 3 4 5 6 7 8 9 10 @FunctionalInterface public interface Consumer <T > { void accept (T t) ; }
代码示例:
1 2 3 4 5 6 7 8 9 10 11 public static void main (String[] args) { Consumer<String> consumer = str -> { System.out.println(str); }; consumer.accept("consumer" ); }
结果:
Supplier 供给型接口:没有参数,只有返回值。
1 2 3 4 5 6 7 8 9 10 @FunctionalInterface public interface Supplier <T > { T get () ; }
代码示例:
1 2 3 4 5 6 7 8 9 10 11 public static void main (String[] args) { Supplier<Integer> supplier = () -> { return 1024 ; }; System.out.println(supplier.get()); }
结果: