1. 程式人生 > >Java8-高階函式及判斷高階函式的方式

Java8-高階函式及判斷高階函式的方式

什麼是高階函式

高階函式是指接受另外一個函式作為引數,或返回一個函式的函式。什麼樣的引數是函式型別的引數?要看該引數是否是一個函式式介面,函式式介面只會有一個方法,會使用 @FunctionalInterface 這個註解來修飾。

高階函式在 Java8 中很常見,如以下的例子:

Stream<Integer> numUp = Stream.of(1, 2, 5).map(num -> num += 1);
Stream<Integer> numbers = Stream.of(1, 2, -1, -5).filter(n -> n > 0);

如何判斷高階函式

Stream 的 anyMatch 是高階函式嗎?是的。因為它的引數接收的是另外一個函式:Predicate。

boolean greaterThanZero = Stream.of(-1, -2, 0, -5).anyMatch(num -> num > 0);

Stream 的 limit 是高階函式嗎?是的。因為它的返回值是一個Stream。

Stream<Integer> onlyTwoNumbers = Stream.of(-1, -2, 0, -5).limit(2);