在Java中,函数式接口是指只有一个抽象方法的接口。Java 8之后,引入了函数式编程的思想,使得Java中的函数式接口得到了广泛的应用。本文将详细介绍Java中的三种常用函数式接口:Predicate、Function、Consumer接口。
Predicate接口是一个函数式接口,它接收一个输入参数,返回一个布尔值。该接口通常用于判断某个输入值是否满足指定条件。
@FunctionalInterface public interface Predicate<T> { boolean test(T t); }
Predicate接口有一个默认方法and,可以将两个Predicate对象进行逻辑与操作,即取两个Predicate对象的交集。另外,Predicate接口还有一个默认方法or,可以将两个Predicate对象进行逻辑或操作,即取两个Predicate对象的并集。
Predicate<String> predicate1 = (s) -> s.length() > 0; Predicate<String> predicate2 = (s) -> s.startsWith("hello"); boolean result = predicate1.and(predicate2).test("hello world"); System.out.println(result); //true
Function接口是一个函数式接口,它接收一个输入参数,返回一个输出结果。该接口通常用于进行数据类型转换或数据处理。
@FunctionalInterface public interface Function<T, R> { R apply(T t); }
Function接口有一个默认方法andThen,可以将两个Function对象进行逻辑与操作,即先执行当前Function对象,再执行after操作的Function对象。另外,Function接口还有一个默认方法compose,可以将两个Function对象进行逻辑或操作,即先执行before操作的Function对象,再执行当前Function对象。
Function<Integer, String> function1 = (num) -> String.valueOf(num); Function<String, String> function2 = (str) -> "hello " + str; String result = function1.andThen(function2).apply(123); System.out.println(result); //hello 123
Consumer接口是一个函数式接口,它接收一个输入参数,不返回任何结果。该接口通常用于对某个输入值进行处理,例如输出、修改等操作。
@FunctionalInterface public interface Consumer<T> { void accept(T t); }
Consumer接口有一个默认方法andThen,可以将两个Consumer对象进行逻辑与操作,即先执行当前Consumer对象,再执行after操作的Consumer对象。
Consumer<String> consumer1 = (str) -> System.out.println(str.toUpperCase()); Consumer<String> consumer2 = (str) -> System.out.println(str.toLowerCase()); consumer1.andThen(consumer2).accept("Hello World"); //HELLO WORLD hello world
以上就是Java中三种常用的函数式接口:Predicate、Function、Consumer接口的详细介绍,希望能帮助到编程小白们快速掌握这些接口的使用方法。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com