首页 > 编程语言 >java内置的函数式接口介绍及使用举例

java内置的函数式接口介绍及使用举例

时间:2024-06-19 16:54:27浏览次数:14  
标签:内置 java 函数 对象 接口 举例 类型 方法 Lambda

lambda表达式的本质:作为函数式接口的实例

  • 如果在一个接口中,只声明了一个抽象方法,则此接口就被称为函数式接口,我们可以在一个接口上使用,@FunctionalInterface注解来验证该接口是否为函数式接口(吐过在该接口中写两个方法,则会编译失败)
  • 正是因为抽象方法中只有一个方法,所以我们才可以省略@Override函数声明等内容
    在java.util.function包下定义了Java 8 的丰富的函数式接口
    Java从诞生日起就是一直倡导“一切皆对象”,在Java里面面向对象(OOP)编程是一切。但是随着Python、Scala等语言的兴起和新技术的挑战,Java不得不做出调整以便支持更加广泛的技术要求,也即java不但可以支持OOP还可以支持OOF(面向函数编程)
    在函数式编程语言当中,函数被当做一等公民对待。在将函数作为一等公民的编程语言中,Lambda表达式的类型是函数。但是在Java8中,有所不同。在Java8中,Lambda表达式是对象,而不是函数,它们必须依附于一类特别的对象类型——函数式接口。
    简单的说,在Java8中,Lambda表达式就是一个函数式接口的实例。这就是Lambda表达式和函数式接口的关系。也就是说,只要一个对象是函数式接口的实例,那么该对象就可以用Lambda表达式来表示。
    所以以前用匿名实现类表示的现在都可以用Lambda表达式来写。

Java内置的函数式接口介绍及使用举例

函数式接口 参数类型 返回类型 用途
Consumer 消费型接口 T void 对类型为T的对象应用操作,包含方法:void accept(T t)
Supplier 供给型接口 T 返回类型为T的对象,包含方法:T get()
Function<T, R>函数型接口 T R 对类型为T的对象应用操作,并返回结果。结果是R类型的对象。包含方法:R apply(T t)
Predicate断定型接口 T boolean 确定类型为T的对象是否满足某约束,并返回boolean 值。包含方法:boolean test(T t)
BiFunction<T,U,R> T, U R 对类型为T,U参数应用操作,返回R类型的结果。包含方法为:R apply(T t,U u);
UnaryOperator(Function子接口) T T 对类型为T的对象进行一元运算,并返回T类型的结果。包含方法为:T apply(T t);
BinaryOperator(BiFunction子接口) T,T T 对类型为T的对象进行二元运算,并返回T类型的结果。包含方法为:T apply(T t1,T t2);
BiConsumer<T,U> T,U void 对类型为T,U参数应用操作。包含方法为:void accept(Tt,Uu)
BiPredicate<T,U> T,U boolean 包含方法为:booleantest(Tt,Uu)
ToIntFunction T int 计算int值的函数
ToLongFunction T long 计算long值的函数
ToDoubleFunction T double 计算double值的函数
IntFunction int R 参数为int类型的函数
LongFunction long R 参数为long类型的函数
DoubleFunction double R 参数为double类型的函数

标签:内置,java,函数,对象,接口,举例,类型,方法,Lambda
From: https://www.cnblogs.com/cgy1995/p/18256600

相关文章

  • mysql-connector-java 驱动jar包下載
    地址MySQL::MySQLDownloads,点击网址,进入mysql官网首页,我们点击downloads(下载)然后将页面往下拉,点击如图所画的选择,进入点击Connector/J,表示的java语言连接的数据库驱动器,如果是Python则选择下面Python为后缀的Connector,同理其他语言则选择对应的即可。因为我用的是Java,......
  • java object多大 java对象内存模型 数组有多长(八)多线程
    在javaobject多大java对象内存模型数组有多长(四)已经访问的对象记录优化中,用byte数组处理,现在它将暴露在多线程中 1对byte数组加volatile2可见性:用Unsafe控制ConcurrentHashMap内并发数组元素的可见性中的方法来byte数组元素的读写 原子性1)compareandsetbyte 2......
  • 深入理解JavaScript中的闭包与作用域链
    作为一名JavaScript开发者,了解闭包与作用域链是非常重要的。本文将深入探讨这两个概念,帮助您更好地理解JavaScript的运行机制。作用域链在JavaScript中,每个函数都有一个属于自己的作用域,称为局部作用域。当函数被执行时,会创建一个执行上下文,其中包括局部作用域和其父级作用域......
  • 掌握异步编程:探索JavaScript中的Promise与async/await
    在现代JavaScript开发中,异步编程已经成为了不可或缺的一部分。为了更好地处理异步操作,JavaScript引入了Promise和async/await两个重要概念。本文将带您了解这两个概念,帮助您掌握异步编程。 PromisePromise是异步编程的一种解决方案,它表示一个异步操作的最终完成(或失败)及其结......
  • java面向对象-封装
    一封装(面向对象的三大特征--封装)1.1封装的概念将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问1.2封装的步骤私有化(private)是一个权限修饰符。可以修饰成员(成员变量和成员方法)被private修饰的成员......
  • JavaScript之BOM
    BOMBOM将浏览器中的各个部分转换成了一个一个的对象,我们通过修改这些对象的属性,调用他们的方法,从而控制浏览器的各种行为BOM对象window用来存储所有全局的属性和方法windows对象表示浏览器当前打开的窗口window对象是BOM的核心,它表示一个浏览器的实例。在浏览器中......
  • JavaScript之DOM
    DOMDOM,全称DocumentObjectModel文档对象模型。JS中通过DOM来对HTML文档进行操作。只要理解了DOM就可以随心所欲的操作WEB页面,改变页面的内容、结构、样式。文档文档表示的就是整个的HTML网页文档对象对象表示将网页中的每一个部分都转换为了一个对象(通过修改对象去修......
  • java spring-data-jpa 使用方法
    SpringDataJPA是Spring生态系统的一部分,它提供了对JPA(JavaPersistenceAPI)的抽象,简化了数据访问层的开发。以下是使用SpringDataJPA的基本步骤和一些核心概念:1.添加依赖        在Maven项目的pom.xml文件中添加SpringDataJPA和相关数据库驱......
  • JAVA复习_PTA_判断题_汇总
    在Java中,方法重写(Override)是子类对父类允许方位的方法的实现过程进行重新编写,其参数列表一定不能修改,异常、访问限制和返回值类型能够进行修改。FJava中,final关键字修饰的类成员方法,不能被子类重写。TJava中,接口中的成员变量可用abstract关键字修饰。FJava中,接口中的成......
  • java面向对象
    一面向对象面向对象和面向过程类与对象类是对对象的抽象,是创建对象的模版对象是类的具体的存在,一个对象是一个类的具体实例创建类的语法一般一个文件中,只有一个类,而且public修饰的类和文件名相同类名首字母大写创建对象的语法类型变量名=......