Java8新特性 - Java内置的四大核心函数式接口
Java内置的四大核心函数式接口
Consumer:消费型接口
对类型为T的对象应用操作,包含方法:void accept(T t)
public class TestLambda02 {
public static void main(String[] args) {
testConsumer(9999, (x) -> {
System.out.println("打游戏花费:" + x);
});
}
public static void testConsumer(double money, Consumer<Double> consumer) {
consumer.accept(money);
}
}
Supplier:供给型接口
返回包含类型为T的对象,包含方法:T get()
public class TestLambda02 {
public static void main(String[] args) {
List<Integer> list = testSupplier(10, () -> (int)(Math.random() * 100));
list.forEach(System.out::println);
}
public static List<Integer> testSupplier(int num, Supplier<Integer> supplier) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < num; i ++) {
Integer n = supplier.get();
list.add(n);
}
return list;
}
}
Function<T, R>:函数型接口
对类型为T的对象应用操作,并返回结果,结果类型为R。包含方法:R apply(T t)
public class TestLambda02 {
public static void main(String[] args) {
String string = testFunction("哈哈哈哈哈哈哈", (str) -> str.substring(0, str.length() - 2));
System.out.println("---->" + string);
}
public static String testFunction(String str, Function<String, String> function) {
return function.apply(str);
}
}
Predicate(T):断定型接口
确定类型为T的对象是否满足某约束,并返回boolean值。包含方法:boolean test(T t)
public class TestLambda02 {
public static void main(String[] args) {
System.out.println(testPredicate("哈哈哈哈皇后", (str) -> str.length() == 3));
}
public static boolean testPredicate(String string, Predicate<String> predicate) {
return predicate.test(string);
}
}
PS:除了这四个接口,java还内置了其他很多接口,这里不再赘述。可以在rt.jar文件下的java/util/function包下查看。