文档
定义函数式接口
package com.github.mouday.demo;
/**
* 定义一个函数式接口
*/
@FunctionalInterface
public interface GreetingService {
void sayMessage(String message);
}
实现接口
package com.github.mouday.demo;
public class Demo {
public static void main(String[] args) {
// 使用Lambda表达式来表示该接口的一个实现
GreetingService greetingService = message -> System.out.println("hello: " + message);
greetingService.sayMessage("Tom");
// hello: Tom
}
}
Java8提供的 Predicate接口定义
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Predicate接口使用
package com.github.mouday.demo;
import java.util.*;
import java.util.function.Predicate;
public class Demo {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);
// 输出所有值
eval(list, o -> true);
// 1 2 3 4 5 6
// 输出所有偶数值
eval(list, o -> o % 2 == 0);
// 2 4 6
// 输出所有大于3的数值
eval(list, o -> o > 3);
// 4 5 6
}
public static void eval(List<Integer> list, Predicate<Integer> predicate) {
for (Integer i : list) {
if (predicate.test(i)) {
System.out.printf("%d ", i);
}
}
System.out.println();
}
}