java8新特性(3)— 函数式接口
有且仅有一个抽象方法
package com.common.jdk8;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Jdk8Test3 {
public static void main(String[] args) {
GreetingService greetingService = message -> System.out.println("Hello " + message);
greetingService.sayMessage("xiaoming");
greetingService.sayMessage("xiaoming2");
greetingService.sayMessage("xiaoming3");
greetingService.sayMessage("xiaoming4");
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
System.out.println("输出所有数据:");
eval(list, n -> true);
System.out.println("输出所有偶数:");
eval(list, n -> n % 2 == 0);
System.out.println("输出大于 3 的所有数字:");
eval(list, n -> n > 3);
System.out.println("不用eval方法,输出大于 3 的所有数字:");
list.stream().filter(n -> n > 3).forEach(System.out::println);
}
public static void eval(List<Integer> list, Predicate<Integer> predicate) {
for (Integer n : list) {
if (predicate.test(n)) {
System.out.println(n + " ");
}
}
}
public static void eval2(List<Integer> list, Predicate<Integer> predicate) {
list.stream().filter(predicate).forEach(System.out::println);
}
}
interface GreetingService {
void sayMessage(String message);
default void defaultMethod() {
System.out.println("defaultMethod");
}
static void printHello() {
System.out.println("Hello");
}
@Override
boolean equals(Object obj);
}
运行结果
Hello xiaoming
Hello xiaoming2
Hello xiaoming3
Hello xiaoming4
输出所有数据:
1
2
3
4
5
6
7
8
9
10
输出所有偶数:
2
4
6
8
10
输出大于 3 的所有数字:
4
5
6
7
8
9
10
不用eval方法,输出大于 3 的所有数字:
4
5
6
7
8
9
10