一、说明:
Java 8 内置 4 大核心函数式接口
函数式接口 |
参数类型 |
返回类型 |
方法 |
用途 |
Consumer<T> |
T |
void |
void accept(T t); |
消费型接口 |
Supplier<T> |
无 |
T |
T get(); |
供给型接口 |
Function<T, R> |
T |
R |
R apply(T t); |
函数型接口 |
Predicate<T> |
T |
boolean |
boolean test(T t); |
断言型接口 |
二、代码:
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class TestFunctionalInterface {
public static void main(String[] args) {
FunctionalInterfaceDemo functionalInterfaceDemo = new FunctionalInterfaceDemo();
functionalInterfaceDemo.execDemo();
}
}
/**
* Java 8 内置4大核心函数式接口
* <p>
* | Consumer<T>: 消费型接口
* | void accept(T t);
* |
* | Supplier<T>: 供给型接口
* | T get();
* |
* | Function<T, R>: 函数型接口
* | R apply(T t);
* |
* | Predicate<T>: 断言型接口
* | boolean test(T t);
* |
* </p>
*/
class FunctionalInterfaceDemo {
private void consumerHandler(Double money, Consumer<Double> consumer) {
consumer.accept(money);
}
private Set<Integer> supplierHandler(Supplier<Set<Integer>> supplier) {
return supplier.get();
}
private String funcionHandler(String infoString, Function<String, String> function) {
return function.apply(infoString);
}
private boolean predicateHandler(String name, Predicate<String> predicate) {
return predicate.test(name);
}
public void execDemo() {
//
this.consumerHandler(100D, (money) -> System.out.println("本次消费:" + money + " 元。"));
System.out.println("--------------------------------");
System.out.println();
//
Set<Integer> integerSet = this.supplierHandler(() -> {
Set<Integer> integers = new HashSet<>();
for (int i = 0; i < 5; i++) {
integers.add(new Random().nextInt());
}
return integers;
});
for (Integer integer : integerSet) {
System.out.println(integer);
}
System.out.println("--------------------------------");
System.out.println();
//
String trimString = this.funcionHandler("\t\t\t Hello World. ", (str) -> str.trim());
System.out.println(trimString);
String subString = funcionHandler("我是一个函数", (str) -> str.substring(4, 6));
System.out.println(subString);
System.out.println("--------------------------------");
System.out.println();
//
List<String> idCardsNumber = Arrays.asList("123X", "456X");
for (String idCardNumber : idCardsNumber) {
Boolean is = this.predicateHandler(idCardNumber, (idCard) -> "123X".equals(idCard));
if (is) {
System.out.println(idCardNumber + " 是我的身份证号。");
} else {
System.out.println(idCardNumber + " 不是我的身份证号。");
}
}
System.out.println("--------------------------------");
System.out.println();
}
}
三、运行结果: