Java中的函数接口
作为一种面向对象的编程语言,Java不可能有独立的函数,因为除了一些原始数据类型和方法之外,所有的东西都围绕着类和对象。函数一直是类的一部分,只能使用对象或类来调用。
然而,随着Java8的发布,一个叫做函数接口的新概念以及其他一些功能如Lambda表达式、时间API、流API等被发布。
但是,这些函数接口是什么,你如何定义它们?让我们来了解一下!什么是接口?
接口作为一种抽象机制,规定了一个类的行为。它也被称为一个包含抽象方法和静态常量的类的蓝图。一个接口可以包含一个或多个抽象方法,而不是方法主体。
简单地说,一个接口就像一个合同,每个实现类都必须遵守。比如说。
因此,如果实现该接口的类没有声明该接口的所有方法,代码将无法运行并抛出一个错误:error:A1isnotabstractanddoesnotoverrideanabstractmethodinA1。
在JDK8之前,接口不能定义实现,但现在可以为接口方法添加默认实现。我们还可以定义静态和默认方法,这些方法可以在没有接口中的对象的情况下被调用。
基本上,接口是用来实现代码中的多重继承和松散耦合的。
现在我们对接口有了清楚的了解,让我们看看什么是函数接口,以及它是如何工作的。什么是函数接口?
函数接口也被称为单一抽象方法(SAM)接口,因为它不能有多于一个抽象方法。
函数接口可以有多个静态和缺省方法,并有一个实现和一个额外的抽象方法。为了将一个接口标记为函数接口,FunctionalInterface注解被用来避免错误地声明额外的方法。
函数接口之所以如此受欢迎,是因为它为程序员提供了使用Lambda表达式来实例化接口的能力,而无需使用匿名和庞大的类实现。
此外,在函数接口中使用抽象关键字是可选的,因为定义在接口内的方法默认是抽象的。
但是,Lambda表达式是什么意思?
Lambda表达式是一种未命名的或匿名的方法,它不单独执行,而是用来实现函数接口的定义方法。它被定义为
使用的箭头运算符()被称为运算符。例如,如果我们有一个方法,如下所示。
使用Lambda表达式,它可以写成:
()1。61803
我们可以看到,Lambda函数中的方法没有任何参数,使得运算符的左边是空的。而右侧定义了动作,在本例中,它将返回GoldenRadio的值:1。61803。
在Java8之前,实现接口或创建内类对象是至关重要的,但随着Java8的引入,我们所能做的就是将Lambda表达式分配给功能接口。
功能接口实例
要创建功能接口,你可以使用FunctionalInterface注解或使用Java预定义的功能接口。
例子A:首先,我们将标记FunctionalInterface,并创建一个名为MyInterface的接口,其抽象方法名为getGoldenRationValue()。然后我们将创建一个名为main的公有类来执行这个方法。为了在功能接口中使用lambda表达式,我们将声明一个对MyInterfaceDemo的引用,然后将lambda表达式分配给该引用。最后,我们将使用引用接口打印出黄金分割率的值。ValueofGoldenRatio1。61803
例B:
在这个例子中,我们将使用一个预定义的函数接口ToDoubleFunction,它接收一个参数T并返回一个双倍数作为输出。ToDoubleFuntion包含一个抽象的方法,名为applyasDouble()。最后,我们将打印包括空格在内的信息长度。预定义函数接口列表
现在我们知道了如何定义函数接口,让我们看看有多少个预定义的功能接口。
主要有四种类型的功能接口,即Consumer、Predicate、Function和Supplier,人们可以在不同情况下实现它们。在这四个接口中,Consumer、Function和Predicate有额外的功能接口。
下面是Java中所有内置或预定义的接口的列表。
注意:下表中提到的T、U和R分别代表第一个参数、第二个参数和操作结果的类型。
Interface
Type
Runnable
BiConsumer(T,U)
T,U
BiFunction(T,U,R)
T,UR
BinaryOperator
T,TR
BiPredicateT,U
T,Uboolean
BooleanSupplier
boolean
Consumer
T
DoubleBinaryOperator
double,doubledouble
DoubleConsumer
double
DoubleFunction
doubleR
DoublePredicate
doubleboolean
DoubleSupplier
boolean
DoubleToIntFunction
doubleint
DoubleToLongFunction
doublelong
DoubleUnaryOperator
doubledouble
FunctionT,R
TR
IntBinaryOperator
intint
IntConsumer
int
IntFunction
intR
IntPredicate
intboolean
IntSupplier
int
IntToDoubleFunction
intdouble
IntToLongFunction
intlong
IntUnaryOperator
intint
LongBinaryOperator
long,longlong
LongConsumer
long
LongFunction
longR
LongPredicate
longboolean
LongSupplier
long
LongToDoubleFunction
longdouble
LongToIntFunction
longint
LongUnaryOperator
longlong
ObjDoubleConsumer
T,double
ObjIntConsumer
T,int
ObjLongConsumer
T,long
Predicate
Tboolean
Supplier
T
ToDoubleBiFunctionT,U
T,Udouble
ToDoubleFunction
Tdouble
ToIntBiFunctionT,U
T,Uint
ToIntFunction
Tint
ToLongBiFunctionT,U
T,Ulong
ToLongFunction
Tlong
UnaryOperator
TT总结
一个接口作为一种抽象机制。
函数接口可以有多个静态和默认的方法,并有一个实现和一个额外的抽象方法。
在函数接口内定义的方法默认是抽象的,因此,现在使用抽象关键字是可选的。
Lambda表达式是一个匿名的方法,它不会自己执行,而是用来实现函数接口的定义方法。
要创建函数接口,你可以使用FunctionalInterface注解或使用Java预定义的函数接口。
以上就是关于函数接口的全部内容,我们希望它能帮助你理解基础知识。请记住,我们只是触及了函数接口的表面,你还可以从Java中的每个预定义的函数接口中了解更多。
朱棣为什么不喜欢太子朱高炽?头条创作挑战赛明仁宗朱高炽,是明朝少有的明君,虽然在位的时间仅有八个月,但是在历史上的地位和评价都比较高!只是,无论从电视剧里面还是从史书的记载上面,咱们都看到的是,明成祖朱棣非常
生活在不同地区,母乳脂质组成各有什么特点?母乳是婴幼儿食品配方设计的黄金标准,全面解析母乳脂质是开发适合中国宝宝配方食品的重要前提。多项研究证明了母乳脂质受母亲基因环境的影响,尤其是我国南北内地与沿海地区饮食习俗差异显著,
带娃之路任重而道远啊自从前段时间被隔离了,没什么事情就开始研究起来和孩子一起拍跳舞视频,但是呢始终没什么播放量。事情还是因为被隔离期间,偶然看见抖音上父女跳舞的视频,感觉挺好玩,就开始带着孩子没事也拍
静默期出生的蛋壳宝贝12月5日,伴随着翼城县人民医院手术室里一阵嘹亮的啼哭声,静默期的小县城又迎来了两个新的小生命,刚刚出生的天使宝宝还裹着妈妈给自己的保护壳,悠闲地躺在完整的胎膜内,像一个透明的水晶
不要随意拿孩子的安危对赌这两天看了一个视频,是说这个孩子睡着了,妈妈去送姐姐上学,结果这孩子还没等妈妈回来的时候就醒了,自己哭着找衣服,然后穿上衣服上学去了。其实这还算是只让人感慨不让人揪心的,我相信许多
父母再生气,这5句话也一定不要对孩子说!句句戳在心窝里本文作者红小豆亲爱的爸爸妈妈今天终于鼓起勇气给你们写这封信,有些话藏在心里很久了,现在,我想大声说出来你们可能不知道,常对我说的这些话,字字如针扎!01hr多大点事儿,你就不能忍忍
适宜行为和不适宜行为幼儿教师,是36岁幼儿在园生活的领路人,是为幼儿一生的发展打下基础的好伙伴,幼儿教师的一举一动一言一行,将会给孩子带来巨大而深远的影响。据研究,教师的教育行为是影响幼儿身心健康发展
儿子的第一次暑假工,是坎坷,也是成长时间啊,你说它短吧,有时候又觉得很长,当你含辛茹苦地抚养着孩子的时候,会觉得怎么过得这么慢,孩子怎么还不快快长大,长大一点,就能自己走路了,不用每天抱在怀里了再长大一点,就可以上幼
赵丽颖打破畸形审美,大脸盘法令纹又怎样,美人不该被标准化年代剧风吹半夏上线后就引起了观众们的注意,该剧以九十年代的钢铁行业发展为背景,演绎大女主成长史,把热门元素都结合到了一起,真是不爆都难。这部剧播出后火速冲到了全网热度第一的位置,也
娇娇离开本山传媒后,走上整容之路,如今后遗症明显,劝网友别碰现在的女生容颜焦虑实在是太过于明显,越来越多的女生,都想让自己变得越来越漂亮,哪怕她本身已经天生丽质,但是依旧会为了让自己变得更加完美,而选择去整容。可能是近年来,我国整容行业变得
童自荣配音界王子,从未对妻子说我爱你,还批李连杰艺德差文李百解童自荣童自荣出生于上海,是我国著名的配音员,获得过第四届汉米顿幕后英雄特别贡献奖。他配有虎胆龙威3侏罗纪公园铁甲威龙佐罗阿凡提少林寺机械战警西游记大圣归来水晶鞋与玫瑰花等3