函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
@FunctionalInterface
public interface GreetingService {
void sayMessage(String message);
}
那么就可以使用Lambda表达式来表示该接口的一个实现(注:JAVA 8 之前一般是用匿名类实现的):
GreetingService greetingService = message -> System.out.println("hello " + message);
函数式接口实例
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);
// 输出所有数据
eval(list,n -> true);
// 输出所有偶数
eval(list,n -> n%2 == 0);
// 输出大于 3 的所有数字
eval(list, n -> n > 3);
}
private static void eval(List<Integer> list, Predicate<Integer> predicate){
for (Integer n:list) {
if (predicate.test(n)){
System.out.println(n + " ");
}
}
}