Java8函数式接口
- 1. Consumer<T> 消费型接口
- 2. Supplier <R> 供给型接口
- 3. Function<T, R> 函数型接口
- 4. Predicate<T> 断定型接口
- 5. 四大接口总结
函数式接口有利于lambda表达式的编写和流式计算。在Java中定义了四种函数式接口,
Consumer
消费型接口 有参无返,Supplier
供给型函数 无参有返,Function
函数式接口 有参有返,Predicate
断定型接口。 四大接口。接口参数和返回值只有一个。
下面T为类型的泛型,R为返回的泛型
1. Consumer<T> 消费型接口
- 匿名内部类实现
// 消费型函数
Consumer<String> consumer = new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println("come in consumer type function..." + s);}
};
- lambda演示
private static void consumerDemo() {Consumer<String> consumer = str -> {System.out.println("消费型函数 有参无返");System.out.println(str);};// 调用consumber接口中的函数consumer.accept("bitQian666");
}
2. Supplier <R> 供给型接口
- 匿名内部类实现
// 供给型函数
Supplier<String> supplier = new Supplier<String>() {@Overridepublic String get() {return null;}
};
- lambda演示
private static void supplierDemo() {// 供给型函数Supplier<String> supplier = () -> "supplier 供给型函数 无参有返";System.out.println(supplier.get());
}
3. Function<T, R> 函数型接口
- 匿名内部类实现
// 函数型接口
Function<String, Integer> function = new Function<String, Integer>() {@Overridepublic Integer apply(String s) {return null;}
};
- lambda演示
private static void functionDemo() {// 函数型接口Function<String, Integer> function = s -> {System.out.println("这是有参有返回的函数式接口!\t" + s);return 666;};System.out.println(function.apply("hello function!"));
}
4. Predicate<T> 断定型接口
- 匿名内部类实现
// 断定型接口
Predicate<String> predicate = new Predicate<String>() {// 参数是泛型 返回是boolean// 调用test方法@Overridepublic boolean test(String s) {return false;}
};
- lambda演示
private static void predicateDemo() {// 方法引用 判断输入的字符串 是否为空Predicate<String> predicate = String::isEmpty;System.out.println(predicate.test("hhh"));
}