java提供的4种函数式接口
目录
- 1、什么是函数式接口
- 2.java提供四种类型的函数式接口
1、什么是函数式接口
函数接口是只有一个抽象方法的接口,用作 Lambda
表达式的类型。使用@FunctionalInterface
注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。
有且只有一个抽象方法的接口
场景:
适用于函数式编程场景(使用lambda
表达式编程)的接口,函数式接口可以适用于lambda
使用的接口。
只有确保接口中有且只有一个抽象方法,java
中的lambda
才能顺利推到
2.java提供四种类型的函数式接口
package day06.java8; /* java提供四种类型的函数式接口 Function<T,R>, 转换类型,传入一个T类型,传出一个R类型 Consumer<T> 消费型 Supplier<T>,什么都不传,给返回一个对象 Predicate<T> 断言型,传入一个T类,返回断言true false */ import org.apache.commons.lang3.RandomStringUtils; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; public class Demo04 { public static void main(String[] args) { // Function<T,R>, 转换类型 Function<String,Integer> function =str -> str.length(); Integer abc = function.apply("abc"); System.out.println(abc); // Consumer<t> 消费型 Consumer<String> consumer =str-> System.out.println(str); consumer.accept("abc"); //Supplier<T>,什么都不传,给返回一个对象 // 这里随机返回一个长度为8的字符串 Supplier<String> supplier = ()-> RandomStringUtils.randomAlphanumeric(8); String s = supplier.get(); System.out.println(s); // Predicate<T> 断言型,传入一个T类,返回断言true false Predicate<String> predicate =str->str.length()>3; boolean test = predicate.test("abcd"); System.out.println(test); } }
到此这篇关于java提供的4种函数式接口的文章就介绍到这了,更多相关java函数式接口内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Java中接口Set的特点及方法说明
目录 接口Set的特点及方法 Set接口及其实现类 Set接口有两个实现类 Set接口:Set存储元素是无序不可以重复的 因为Set接口也是Collection的子接口 1.TreeSet:树状集合.存放有序 2.HashSet:散列集合.高效快速 接口Set的特点及方法 1.特点:无序,不可重复: 2.实现类:添加的方法: add(Object obj); addAll(Collection c); Set中没有修改的方法,可以间接修改,先删除再添加: 删除的方法: remove(Object
-
Java接口的本质解析
目录 接口 接口的定义 接口和抽象的区别
-
Java入门基础之抽象类与接口
目录 一.抽象类 1.什么是抽象类 2.语法规则 3.抽象类的作用 二.接口 1.什么是接口 2.语法规则 3.实现多个接口 4.接口之间的继承 三.接口的使用实例 1. Comparable 接口 2.Comparator接口 3.Clonable接口 四.总结 一.抽象类 1.什么是抽象类 首先我们来回顾一下上一篇文章提到的一个例子:打印图形 class Shape { public void draw() { // 啥都不用干 } } class Cycle extends Shape {
-
Java中的抽象类和接口你了解吗
目录 抽象类 什么是抽象类? 抽象类属于什么类型? 抽象类怎么定义? 抽象类是干什么的? 什么是抽象方法? 非抽象类继承抽象类 抽象类总结 接口 接口的基础语法 接口的实现 接口和多态联合使用 继承和实现同时出现 接口在开发中的作用 类型和类型之间的关系 总结 抽象类 什么是抽象类? 类和类之间有共同特征,将这些共同特征提取出来进一步抽象,就形成了抽象类.由于类是不存在的,所以抽象类无法创建对象. 抽象类属于什么类型? 抽象类也属于引用数据类型. 抽象类怎么定义? [修饰符列表] abstrac
-
Java抽象类和接口使用梳理
目录 抽象类 抽象方法 抽象类三大原则 接口 接口使用原则 JDK两大内置接口 java.lang.Comparable 比较接口 java.lang.Cloneable 克隆接口 对象的深浅拷贝 抽象类和接口的区别 抽象类 什么是抽象类呢?在现实生活中,我们说“人类”,我们无法对应到具体某个人,同样的,“动物类”.“图形类”这些无法映射到具体的对象的类就是抽象类. 抽象类是普通类的超集,意思就是普通类有的抽象类也有,只是它比普通类多了一些抽象方法而已.这些抽象方法可以有一个,也可以有多个. 它
-
Java十分钟精通接口的使用与原理
何为接口? 官方解释: Java内的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 个人理解解释: 其实接口可以理解为一种特殊的类,这个类里面全部是由全局常量和**公共的抽象方法(需要重写)所组成.接口是解决Java无法使用多继承的一种手段.我们可以把接口理解为是一个100%的抽象类,既接口中的方法必须全部是抽象方法.反正接口里面都是方法,但是没有方法体,其他类实现这个接口后重
-
Java中的接口多继承机制
目录 问题原因 一个接口可以同时继承多个接口 接口不能实现任何接口 一个类可以实现多个接口 一个类只能继承一个父类 总结: 问题原因 今天在看集合源码的时候,突然看到接口继承接口,觉得有点差异,以前写代码也就是类继承一个类,实现接口.这样写的多了,突然看到接口继承接口就有点诧异了,以为哪里不对.就测试,查阅了一些资料 一个接口可以同时继承多个接口 书写接口测试 public interface Jiekou extends Jiekou1,Jiekou2{ void jiekou(); } pu
-
Java接口回调的本质详解
本质是JVM指令invokevirtual它涉及到了多态的特性,使用 virtual dispatch 做方法调用 virtual dispatch 机制会首先从 receiver(被调用方法的对象的实际类型)的类的实现中查找对应的方法,如果没找到,则去父类查找,直到找到函数并实现调用,而不是依赖于引用的类型. 我们知道了接口回调的本质是多态,多态的本质是JVM的invokevirtual指令,那么我们就不用拘泥于接口和抽象类或者继承关系这种概念了,我们直接写一个用普通类实现的回调然后再分析它:
-
java提供的4种函数式接口
目录 1.什么是函数式接口 2.java提供四种类型的函数式接口 1.什么是函数式接口 函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型.使用@FunctionalInterface注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错.可以有多个默认方法,静态方法. 有且只有一个抽象方法的接口 场景: 适用于函数式编程场景(使用lambda表达式编程)的接口,函数式接口可以适用于lambda使用的接口. 只有确保接口中有且只有一个抽象方法,java中的lamb
-
Java Lambda表达式常用的函数式接口
目录 Supplier接口 Consumer接口 Predicate接口 Function接口 BiFunction接口 基本数据类型 Supplier相关的接口 Consumer相关的接口 Predicate相关的接口 Function相关的接口 前言: 在Java8支持Lambda表达式以后,为了满足Lambda表达式的一些典型使用场景,JDK为我们提供了大量常用的函数式接口.它们主要在 java.util.function 包中,下面简单介绍几个其中的接口及其使用示例. Supplier接
-
Java特性 Lambda 表达式和函数式接口
目录 Java Lambda表达式 起源&概念 语法 简单例子 Lambda简化Runnable例子 代码分析 自定义接口实现lambda 函数式接口 概念 备注 格式 @FunctionalInterface注解 自定义函数式接口 Java Lambda表达式 为方便使用Java函数式接口,一定要搞清楚Java的Lambda表达式怎么书写.同时Java的Lambda不是那么通俗易懂,所以一定得学明白,不然其实后面涉及到Lambda的代码部分会变得晦涩难懂.而且掌握Lambda表达式可以让你写出
-
Java Lambda表达式常用的函数式接口
失去人性,失去很多:失去兽性,失去一切.——<三体> 在Java8支持Lambda表达式以后,为了满足Lambda表达式的一些典型使用场景,JDK为我们提供了大量常用的函数式接口.它们主要在 java.util.function 包中,下面简单介绍几个其中的接口及其使用示例. Supplier接口 Supplier接口是对象实例的提供者,定义了一个名叫get的抽象方法,它没有任何入参,并返回一个泛型T对象,具体源码如下: package java.util.function; @Functio
-
详细介绍Java函数式接口
目录 Java-函数式接口 1.自定义函数式接口 1.1概述 1.2格式 1.3@FunctionalInterface注解 1.4自定义函数式接口 2.函数式编程 2.1Lambda的延迟执行 2.2使用Lambda作为参数和返回值 3.常用函数式接口 3.1Supplier接口 3.2Consumer接口 3.3Predicate接口 3.4Function接口 Java-函数式接口 1.自定义函数式接口 1.1概述 函数式接口在Java中是指:**有且仅有一个抽象方法的接口.**当然接口中
-
Java 8 Function函数式接口及函数式接口实例
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为lambda表达式. 函数式接口可以现有的函数友好地支持 lambda. 介绍 函数式接口其实就是一个抽象接口类,在Java 8之前已有的函数式接口有以下. java.lang.Runnable java.util.concurrent.Callable java.util.Comparator 等等... 使用方法 其实上述所说的接口类只需要使用Fun
-
Java 8新特性 内建函数式接口详解
Java 8新特性内建函数式接口 在之前的一片博文 Lambda 表达式,提到过Java 8提供的函数式接口.在此文中,将介绍一下Java 8四个最基本的函数式接口 对于方法的引用,严格来讲都需要定义一个接口.不管我们如何操作实际上有可能操作的接口只有四种. Java 8 提供了函数式接口包java.util.function.*,在该包下有许多Java 8内建的函数式接口.不过基本上分为四种基本的: 功能型接口 (Function) 将 T 作为输入,返回 R 作为输出,他还包含了和其他函数组
-
一文带你掌握Java8中Lambda表达式 函数式接口及方法构造器数组的引用
目录 函数式接口概述 函数式接口示例 1.Runnable接口 2.自定义函数式接口 3.作为参数传递 Lambda 表达式 内置函数式接口 Lambda简述 Lambda语法 方法引用 构造器引用 数组引用 函数式接口概述 只包含一个抽象方法的接口,称为函数式接口. 可以通过 Lambda 表达式来创建该接口的对象. 可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口.同时 javadoc 也会包含一条声明,说明这个接口是一个函数式接口.
-
Java8之函数式接口及常用函数式接口讲解
目录 函数式接口 1.概念 2.@FunctionalInterface 3.函数式接口使用方式 常用函数式接口 1.JDK提供的函数式接口举栗 2.Supplier 3.Consumer 4.Predicate 5.Function 6.常用函数式接口相关扩展接口 函数式接口 1.概念 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式. Lambda 表达式和方法引用(实际上也
-
Java for循环几种写法整理
Java for循环几种写法整理 概要: J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象.本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题. 在Java程序中,要"逐一处理"――或者说,"遍历"――某一个数组或Collection中的元素的时候,一般会使用一个for循环来实现(当然,用其它种类的循环也不是不可以,只是不知道是因为fo
随机推荐
- jQuery实现注册会员时密码强度提示信息功能示例
- Python抓取Discuz!用户名脚本代码
- Objective-C实现身份证验证的方法示例
- 深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
- 谈谈对offsetleft兼容性的理解
- asp.net 2.0多语言网站解决方法
- 用PHP ob_start()控制浏览器cache、生成html实现代码
- Android自定义表格控件满足人们对视觉的需求
- php连接数据库代码应用分析
- Windows下用py2exe将Python程序打包成exe程序的教程
- JSP自定义标签rtexprvalue属性用法实例分析
- 网络复制内容时常用的正则+editplus 原创
- Raphael带文本标签可拖动的图形实现代码
- javascript获取元素偏移量的方法有哪些
- php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创
- 禁止JQuery中的load方法装载IE缓存中文件的方法
- jQuery 插件开发指南
- ASP.NET页面间的传值的几种方法
- JavaScript的Proxy可以做哪些有意思的事儿
- SpringCloud Gateway跨域配置代码实例