很多新手在学习java的时候,都不太明白java8为什么引入函数编程?那么接下来,我们就来给大家讲解一下这方面的内容。希望以下的内容可以解除大家心中的疑惑!
Java8之前,如果开发者想以函数式风格编程,他或她只能使用嵌套类型(通常是匿名内部类)作为函数代码的替代。java8引入函数编程减少了可变量(Immutable Variable)的声明,能够更好的利用并行(Parallelism),代码更加简洁和可读,函数式接口函数式接口就是仅声明了一个方法的接口,比如我们熟悉的Runnable,Callable,Comparable等都可以作为函数式接口。当然,在Java 8中,新添加了一类函数式接口,如Function,Predicate,Consumer,Supplier等。
java8有哪些核心接口?
Java8里面引入了新的一个包java.util.function。里面定义了下面几个核心接口:
Function
Consumer
Predicate
Supplier
BiFunction
BiConsumer
BiPredicate
Function接口
//function表示具有返回值的,具有一个参数的方法Function function1=Integer::valueOf;Function function2=String::valueOf;//可以用lambda表达式Function function3=(a)->a.toString();//报错,因为无返回值//Function out=System.out::println;//返回值是Boolean的functionString o="123";Function function4=o::equals;boolean equals=function4.apply("123");
Consumer接口
//Consumer可以用来表示只有一个参数,无返回值的方法Consumer consumer=System.out::println;consumer.accept("123");//可以用lambda表达式Consumer consumer2=(a)->{};
Predicate接口
//用Predicate来表示Predicate predicate=o::equals;
Supplier接口:
//无参数有返回Supplier supplier=o::hashCode;IntSupplier intSupplier=o::hashCode;Supplier supplier2=()-> "test";
二元参数相关:
//二个参数的函数BiFunction test= (str,str2)->true;BiConsumer test2=(str,str2)->{};BiPredicate test3=(str,str2)->true;
现在大家应该知道相关原因了吧,引入函数编程可以方便程序员更好的编写程序,这对于java程序员来说是一件好事!最后大家如果想要了解更多java常见问题知识,敬请关注奇Q工具网。
推荐阅读: