资讯专栏INFORMATION COLUMN

Function相关接口简介

gotham / 1246人阅读

摘要:相关接口简介什么是接口,它代表这样的一个函数,接受一个参数,然后返回一个结果。参数和返回值相互转化的个作为参数的和个作为返回值的相互组合去掉重复的嗯,又到种接口,,,,,。

Function相关接口简介 什么是Function接口?

interface Function,它代表这样的一个函数,接受一个参数,然后返回一个结果。

Function接口的functional方法
R apply(T t)

表示,接受一个类型为T的参数t,返回一个类型为R的结果。注意:

TR可以是同一种类型,当然也可以是不同的类型。

这里只接受一个参数。

那么问题来了,我有两个、三个参数怎么办?

什么是BiFunction接口?

interface BiFunction,从名字上大家应该就能推断出来,它代表这样的一个函数,接受两个参数,然后返回一个结果。

BiFunction接口的functional方法
R apply(T t, U u);

表示,接受两个参数t和u,类型分别为TU的,返回一个类型为R的结果。注意:

TUR可以是同一种类型,当然也可以是不同的类型。

这里只接受两个参数。

现在咱们再来看上面的问题,三个参数的时候怎么办?function包下并没有这样的接口,所以咯,自己动手丰衣足食:

  public interface TripleFunction {
          R apply(T t, U u, M m);
  }
更进一步

function包还很贴心地为我们提供了很多常用的functional接口,其中很大一部分就是和原始类型Primitive Type)有关的。一旦掌握了其中的规律,可以达到举一反三、事半功倍的效果。下面就跟着彬哥一起来看看吧。

作为参数的原始类型来划分

DoubleFunction,接受一个类型为double的参数,返回一个结果。

    @FunctionalInterface
    public interface DoubleFunction {
        R apply(double value);
    }

IntFunction,接受一个类型为int的参数,返回一个结果。

    @FunctionalInterface
    public interface IntFunction {
        R apply(int value);
    }

LongFunction,接受一个类型为long的参数,返回一个结果。

    @FunctionalInterface
    public interface LongFunction {
        R apply(long value);
    }

作为返回值的原始类型来划分

ToDoubleFunction,接受一个参数,返回一个类型为double的结果。

    @FunctionalInterface
    public interface ToDoubleFunction {
        double applyAsDouble(T value);
    }

ToIntFunction,接受一个参数,返回一个类型为int的结果。

    @FunctionalInterface
    public interface ToIntFunction {
        int applyAsInt(T value);
    }

ToLongFunction,接受一个参数,返回一个类型为long的结果。

    @FunctionalInterface
    public interface ToLongFunction {
        long applyAsLong(T value);
    }

参数和返回值相互转化的

3个作为参数的和3个作为返回值的相互组合、去掉重复的

嗯,又Get到6种functional接口:

DoubleToIntFunctionDoubleToLongFunctionIntToDoubleFunctionIntToLongFunctionLongToDoubleFunctionLongToIntFunction

再更进一步

刚刚咱们划分出来的这个12个functional接口都是和Function相关的(一元),那function包有没有给我们提供其他和BiFunction相关的functional接口呢?

当然有。

那咱们就来看看这些二元的functional接口吧。

ToDoubleBiFunction,接受两个参数,返回一个类型为double的结果。

    @FunctionalInterface
    public interface ToDoubleBiFunction {
        double applyAsDouble(T t, U u);
    }

ToIntBiFunction,接受两个参数,返回一个类型为int的结果。

    @FunctionalInterface
    public interface ToIntBiFunction {
        int applyAsInt(T t, U u);
    }

ToLongBiFunction,接受两个参数,返回一个类型为long的结果。

    @FunctionalInterface
    public interface ToLongBiFunction {
        long applyAsLong(T t, U u);
    }

彬哥,这些只是作为返回值的接口,按照上面一元function的划分,那作为参数相互转化的二元接口呢?

那些啊,funciton包就并没有提供了,一来不常用,二来啊,经过彬哥的介绍,相信你已经掌握规律了,很容易就写出来了吧?那就作为课后作业如何?

小结

这一讲,咱们主要介绍了Function相关的functional接口,按大的方面可以以一元二元来分类;再细分的话,可以按原始类型作为参数作为返回值参数返回值相互转化的类别来划分。

另外呀,可以用function包概述及大纲作为参考手册来回顾和查询。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71857.html

相关文章

  • ES6 迭代器简介

    摘要:简单介绍下规范里面迭代器相关的概念。接口指定迭代器对象必须实现一个方法,如下示例伪代码。方法是否接受参数,在规范中并不严格限定,取决于实现当前这个迭代器的对象。表示迭代终结,后续再调用当前迭代器的方法,返回的对象一律为。 简单介绍下 ES6 规范里面迭代器(Iterator)相关的概念。最近为啥会看到迭代器,是因为看了 fetch 相关的 Headers 接口,为了实现下 Header...

    mingde 评论0 收藏0
  • 在区块链上编程:DApp 开发简介

    摘要:目前通常指代基于以太坊或者上的智能合约开发的相关应用。引入以太坊通过的交互流程大致如下总结随着区块链近些年的大红大紫,被推上了风口浪尖,本文从技术的角度大致介绍了一下所涉及的技术要点。 当你开始探索区块链开发,需要了解到这些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...

    huangjinnan 评论0 收藏0
  • Web 安全漏洞 SSRF 简介及解决方案

    摘要:本人非安全专业相关人士,了解不多,实在惭愧。工作原因,在所负责的内部服务中遭遇了的困扰,在此记录一下学习过程及解决方案。,即服务端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。通用的解决方案有过滤返回信息。 Update: 掘金评论区有同学提出通过域名获取 IP 地址时可能遭遇攻击,感谢提醒。本人非安全专业相关人士,了解不多,实在惭愧。 说到 Web 安全,我们前端...

    xiaodao 评论0 收藏0
  • JavaScript 简介

    摘要:简介原文链接简称是一种轻量级,解释型的编程语言,其函数是一等公民。标准的目标是让任何一种程序设计语言能操控使用任何一种标记语言编写出的任何一份文档。核心规定了如何映射基于的文档结构,以便简化对文档的任意部分的访问和操作。 JavaScript 简介 原文链接 JavaScript ( 简称:JS ) 是一种 轻量级,解释型 的编程语言,其函数是一等公民。众所周知,它是用于网页开发的脚...

    URLOS 评论0 收藏0
  • php 设计模式 之 interface 接口简介

    摘要:须知与大多数抽象类一样,也有抽象方法,不管不能和抽象类一样在接口中包含具体的方法或变量做为抽象性的例外一般约定接口总以字母或者开头接口中定义的所有方法都必须是,这是接口的特性实现多个接口时,接口中的方法不能有重名。否则会导致致命错误。 须知 与大多数抽象类一样,interface 也有抽象方法,不管不能和抽象类一样在接口中包含具体的方法或变量(做为抽象性的例外) 一般约定接口总以字...

    jsummer 评论0 收藏0

发表评论

0条评论

gotham

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<