java8为什么引入函数编程?java8有哪些核心接口?

阳光 2021-01-18 22:30:29 java常见问答 6601

很多新手在学习java的时候,都不太明白java8为什么引入函数编程?那么接下来,我们就来给大家讲解一下这方面的内容。希望以下的内容可以解除大家心中的疑惑!

Java8之前,如果开发者想以函数式风格编程,他或她只能使用嵌套类型(通常是匿名内部类)作为函数代码的替代。java8引入函数编程减少了可变量(Immutable Variable)的声明,能够更好的利用并行(Parallelism),代码更加简洁和可读,函数式接口函数式接口就是仅声明了一个方法的接口,比如我们熟悉的Runnable,Callable,Comparable等都可以作为函数式接口。当然,在Java 8中,新添加了一类函数式接口,如Function,Predicate,Consumer,Supplier等。

java8有哪些核心接口?

Java8里面引入了新的一个包java.util.function。里面定义了下面几个核心接口:

Function:接收一个参数,返回一个结果。

Consumer:接收一个参数,无返回。

Predicate:接收一个参数,返回一个boolean的结果。

Supplier:无参数,返回一个结果。

BiFunction:接收两个参数,返回一个结果。

BiConsumer:接收两个参数,无返回值。

BiPredicate:接收两个参数,返回boolean值。

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工具网。

推荐阅读:

java入门知识点有哪些?java入门知识点分享

java二叉树怎么转成数组?java怎么实现二叉树?

editplus使用教程是什么?editplus好用吗?