java8 -- 函数接口

STC单片机使用FatFs文件系统读取SD卡指定文件内容 阅读详情

java8 新特性  -- 函数接口

函数接口:一个接口,一个抽象方法,构成了函数接口,可以加注解@FunctionalInterface 

                   指定约束该接口为函数接口;函数接口只能有一个自己的抽象方法

简单使用:

自定义函数接口:  定义了三个函数接口

package com.xiaodu.java8.methodcite;

import java.util.function.Supplier;

/**
 * 定义函数接口
 * @author 84287
 *
 */
public interface FunctionInterface {
		
	
	/*
	 * 获取类的实例
	 */
	@FunctionalInterface
	interface function01<T>{
		 T getObject();
	}
	//函数接口是主要是给Lambda使用 java8中已经有好多函数接口,很多不用自己定义

      //本人自己定义的function01<t> 其实和 java.util.function中的Supplier<T>一样的

	
}

 

使用函数接口:

public static void main(String[] args) {
		
		function01<String> f01 = () -> "xiaoming";
		String string = f01.getObject();
		System.out.println(string.length());  // 8
	}

java 8 中自带的函数接口大全:

JDK 1.8之前已有的函数式接口:

·        java.lang.Runnable

·        java.util.concurrent.Callable

·        java.security.PrivilegedAction

·        java.util.Comparator

·        java.io.FileFilter

·        java.nio.file.PathMatcher

·        java.lang.reflect.InvocationHandler

·        java.beans.PropertyChangeListener

·        java.awt.event.ActionListener

·        javax.swing.event.ChangeListener
--------------------- 

java.util.function.* 下的函数接口

函数接口
序号接口名 && 抽象方法备注
1

BiConsumer<T,U>   ;

 void accept(T t, U u);

代表了一个接受两个输入参数的操作,并且不返回任何结果
2

BiFunction<T,U,R>;

  R apply(T t, U u);

代表了一个接受两个输入参数的方法,并且返回一个结果
3

BinaryOperator<T>;

继承BiFunction<T,U,R>;

代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果
4

BiPredicate<T,U>;

 boolean test(T t, U u);

代表了一个两个参数的返回boolean值方法
5BooleanSupplier代表了boolean值结果的提供方

6

Consumer<T>;

  void accept(T t);

代表了接受一个输入参数并且无返回的操作
7

DoubleBinaryOperator;

 double applyAsDouble(double left, double right);

代表了作用于两个double值操作符的操作,并且返回了一个double值的结果
8

DoubleConsumer;

 void accept(double value);

代表一个接受double值参数的操作,并且不返回结果
9

DoubleFunction<R>;

  R apply(double value);

代表接受一个double值参数的方法,并且返回结果
10

DoublePredicate;

boolean test(double value);

代表一个拥有double值参数的返回boolean值方法
11

DoubleSupplier;

 double getAsDouble();

代表一个无参,返回double值的方法
12

DoubleToIntFunction;

 int applyAsInt(double value);

接受一个double类型输入,返回一个int类型结果
13

DoubleToLongFunction;

 long applyAsLong(double value);

接受一个double类型输入,返回一个long类型结果
14

DoubleUnaryOperator;

double applyAsDouble(double operand);

接受一个参数同为类型double,返回值类型也为double。
15

Function<T,R>;

  R apply(T t);

接受一个输入参数,返回一个结果
16

IntBinaryOperator;

 int applyAsInt(int left, int right);

接受两个参数同为类型int,返回值类型也为int 
17

IntConsumer;

void accept(int value);

接受一个int类型的输入参数,无返回值
18

IntFunction<R>;

 R apply(int value);

接受一个int类型输入参数,返回一个结果
19

IntPredicate;

boolean test(int value);

接受一个int输入参数,返回一个布尔值的结果
20

IntSupplier;

int getAsInt();

无参数,返回一个int类型结果
21

IntToDoubleFunction;

 double applyAsDouble(int value);

接受一个int类型输入,返回一个double类型结果
22

IntToLongFunction;

  long applyAsLong(int value);

接受一个int类型输入,返回一个long类型结果
23

IntUnaryOperator;

 int applyAsInt(int operand);

接受一个参数同为类型int,返回值类型也为int 
24

LongBinaryOperator;

long applyAsLong(long left, long right);

接受两个参数同为类型long,返回值类型也为long
25

LongConsumer;

void accept(long value);

接受一个long类型的输入参数,无返回值
26

LongFunction<R>;

 void accept(long value);

接受一个long类型输入参数,返回一个结果
27

LongPredicate;

 boolean test(long value);

接受一个long输入参数,返回一个布尔值类型结果
28

LongSupplier;

long getAsLong();

无参数,返回一个结果long类型的值
29

LongToDoubleFunction;

 double applyAsDouble(long value);

接受一个long类型输入,返回一个double类型结果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

30

LongToIntFunction;

int applyAsInt(long value);

接受一个long类型输入,返回一个int类型结果
31

LongUnaryOperator;

 long applyAsLong(long operand);

接受一个参数同为类型long,返回值类型也为long
32

ObjDoubleConsumer<T>;

 void accept(T t, double value);

接受一个object类型和一个double类型的输入参数,无返回值
33

ObjIntConsumer<T>;

  void accept(T t, int value);

接受一个object类型和一个int类型的输入参数,无返回值
34

ObjLongConsumer<T>;

  void accept(T t, long value);

接受一个object类型和一个long类型的输入参数,无返回值
35

Predicate<T>;

 boolean test(T t);

接受一个输入参数,返回一个布尔值结果
36

Supplier<T>;

T get();

无参数,返回一个结果
37

ToDoubleBiFunction<T,U>;

 double applyAsDouble(T t, U u);

接受两个输入参数,返回一个double类型结果
38

ToDoubleFunction<T>;

  double applyAsDouble(T value);

接受一个输入参数,返回一个double类型结果
39

ToIntBiFunction<T,U>;

 int applyAsInt(T t, U u);

接受两个输入参数,返回一个int类型结果
40

ToIntFunction<T>;

  int applyAsInt(T value);

接受一个输入参数,返回一个int类型结果
41

ToLongBiFunction<T,U>;

  long applyAsLong(T t, U u);

接受两个输入参数,返回一个long类型结果。
42

ToLongFunction<T>;

  long applyAsLong(T value);

接受一个输入参数,返回一个long类型结果
43

UnaryOperator<T>;

继承: extends Function<T, T>;

 R apply(T t);

接受一个参数为类型T,返回值类型也为T
44以上是java8 之后又的函数接口

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

简单使用java8中自带的函数接口

代码体现:

 

 

 

 

 

 

 

 

 

 

 

 

 

使用java8自带的函数接口

 

	public static void main(String[] args) {
		
		String string = MethodCiteFunction.supplier(() -> "接受一个空参,返回一个String对象");
		System.out.println(string);
//		空参,返回一个person对象
		Person person = MethodCiteFunction.supplier(() -> new Person());
//		方法引用,空参返回一个person对象
		Person person2 = MethodCiteFunction.supplier(Person::new);
		
		
	}
	
	/**
	 * Supplier<T>  无参,返回一个泛型类型的对象
	 * @param supplier
	 * @return
	 */
	public static <T>T supplier(Supplier<T> supplier) {
		return  supplier.get();
	}

 

第03章 Hermes Agent 核心原理 环境跑通之后,读者会很自然地想问:Hermes 的内部到底是怎么转起来的?为什么它能做到"越用越聪明"?长对话不会忘记上下文吗?这一章用尽量短的篇幅把核心原理讲清楚。理解原理不是为了纸上谈兵,而是为了在第7章实战时能判断"为什么 Hermes 这么响应"以及"我应该把哪类任务交给它"。 阅读详情

相关推荐

TP4056在单节锂电池充电管理中的创新应用与电路优化

本文深入探讨了TP4056线性充电管理芯片在单节锂电池充电电路中的创新应用与优化方案。针对“边充边用”的核心挑战,文章详细解析了利用PMOS管构建智能供电切换电路的原理,实现了外部电源与电池供电的无缝、安全切换,有效杜绝了电池“边充边放”的风险。同时,提供了关键的元器件选型、PCB布局布线技巧及常见问题排查指南,为创客和硬件开发者提供了高性价比、高可靠性的锂电池电源管理实践方案。

rock5的博客 501

JDK1.8学习笔记2-函数式接口

1Function函数式接口简介 1.1基本用法 示例 public class FunctionTest { public static void main(String[] args) { FunctionTest functionTest = new FunctionTest(); System.out.println(functionTest....

lu322313的博客 402

LPDDR5时序精调:深入解析Read Gate Training的两种模式

本文深入解析了LPDDR5内存中关键的Read Gate Training技术,详细对比了RDQS Toggle Mode(翻转模式)与Enhanced RDQS Mode(增强模式)的工作原理、时序参数及适用场景。文章阐述了在高速数据传输下精准校准时序的必要性,并提供了两种模式的实战选型指南与系统级调试思路,帮助工程师优化内存性能与稳定性。

weixin_29219189的博客 365

Java学习之函数式接口

Java学习之函数式接口 what(是什莫) 函数式接口(Function Interface)指的是有且只有一个抽象方法的接口,但是可以有多个非抽象方法。 函数接口可以用来支持lambda表达式,lambda表达式作为函数接口中抽象方法的具体实现使用 how(怎末做) 接口的创建方式和普通接口类似,不同的是只有一个方法 interface Tes{ void add(); } 可以在接口上...

洒家 238

论文学习:Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline

title: “Towards Automated Infographic Design:Deep Learning-based Auto-generation of Extensible Timeline” tags: [“论文评述”, “报告”] date: 2019-08-22 author: 叶慧 mathjax: true 论文:Towards Automated Infograph...

xiaoyehahaha的博客 731

基于STM32L4XX、HAL库的SIM65M定位模块驱动程序设计

SIM65M是一款基于4G LTE Cat.1的无线通信模块,支持最大下行速率10Mbps和上行速率5Mbps。它兼容多种网络协议(TCP/UDP/HTTP/HTTPS/FTP/MQTT等),适用于物联网应用。PC0 <---> PWRKEY (模块电源控制)PC1 <---> RESET (模块复位)支持LTE-FDD/LTE-TDD。工作电压:3.4V~4.2V。

zhusl6688的博客 196

Java8中Function函数式接口详解及使用

文章目录1.函数式接口1.1允许定义默认方法1.2允许定义静态方法1.3允许定义java.lang.Object的public方法1.4已有函数式接口2.Function函数2.1Function1.函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为lambda表达式和方法引用(用冒号::来进...

Life is for sharing的博客 6万+

6.4 直流无刷电机(BLDC):测试与性能评估

本文系统阐述了直流无刷电机(BLDC)的测试与性能评估方法,涵盖参数测量、性能测试、测试平台设计及可靠性评估。详细介绍了绕组电阻、电感和反电动势的测量原理与修正方法,以及转矩-转速特性、效率分析和动态响应测试的技术要点。通过搭建高精度测功机系统,结合自动化数据处理,实现对电机性能的全面评估。最后讨论了温升、振动、EMC等特殊测试方法,为BLDC电机的设计验证和质量控制提供了完整的技术路径。

技术工作者 440

Java常用函数式编程接口

一、函数式编程接口 Java中的函数式接口一共有四种,其都被注解@FunctionalInterface注释,表明这是一个函数式接口: 消费型接口(Consumer<T>):接口方法void accept(T t),参数T,无返回值; 供给型接口(Supplier<T>):接口方法T get(),返回T类型返回值; 函数型接口(Function<T, R>):接口方法R apply(T t),入参为T类型,返回R类型返回值; 断言型接口(Predicate&lt

Armyyyyy丶的博客 818

苹果生态最佳搭档:Mac mini + OpenClaw + iPhone 远程控制

本文详细介绍如何通过iPhone远程控制Mac mini上的OpenClaw应用,打造高效苹果生态工作流。内容包括:1) 苹果生态整合优势,包括AirDrop、Handoff等功能对比;2) Mac mini配置步骤,涵盖SSH/VNC设置、网络优化及Docker部署OpenClaw;3) iPhone端SSH/VNC客户端选择与Tailscale内网穿透配置;4) 详细SSH密钥设置与连接测试方法。通过这套方案,用户可实现跨设备无缝控制OpenClaw应用,提升远程工作效率。(149字)

一键难忘的博客 790

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1894

java里面operate方法的用法,在Java中如何使用lambda和方法引用实现DoubleBinaryOperator?...

DoubleBinaryOperator是中定义的函数接口java.util.function函数包裹。它接受两个double类型的参数作为输入,并生成另一个double值。DoubleBinaryOperator接口可以用作lambda表达式或方法引用的赋值目标,并且只有一个抽象方法applyAsDouble()。语法@FunctionalInterfacepublicinterfaceDo...

weixin_36423916的博客 740

【教程4>第4章>第22节】FFT频偏估计方法,导频+cordic频偏估计方法,costas环的性能对比

频偏范围适应性:Costas 环频偏锁定和基于 PN 导频和 CORDIC 算法的频偏估计都可以通过调整参数来适应一定范围的频偏,但 Costas 环的频率捕获范围相对较窄,而基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计对频偏范围较大。在高信噪比条件下,三种方法都可以获得较高的估计精度,但在低信噪比环境中,基于 PN 导频和 CORDIC 算法的频偏估计,基于 FFT 变换频偏估计这两个开环方案相对更具优势,而Costas 环频偏锁定的精度可能会受到较大影响.

FPGA/MATLAB学习教程/源码/项目合作开发 608

Java8 - 函数式接口入门

函数式接口简介 函数式接口 (Functional Interface) 就是一个只能有一个抽象方法(且必须有一个抽象方法,有且仅有),可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为 lambda 表达式。函数式接口对现有的函数友好地支持 lambda,让代码看上去更简洁清晰。 在JAVA 8 以前一般使用匿名类来表示一个接口的实现,现在可以通过函数式接口,然后使用Lambda表达式来标识该接口的一个具体实现。 1. Java中的函数式接口 Java 8 以前版本已有的函数式接口: jav

Java小皮孩 4008

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java8之函数接口

函数接口Java8新特性提供了函数式接口,用于更好的支持函数式编程。定义所谓函数式接口就是只有一个抽象方法的接口。Java8中可以通过注解(@FunctionalInterface)来限定它(即便不加注解,只有一个抽象方法默认也是函数式接口)。比如:public interface MyInterface { void myFunction(); }加上注解@FunctionalInter...

hustzw07的博客 1774

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Java函数式编程之Java8四大函数接口

【前序】: 在Java8中,内置了四个核心函数接口,它们存在是Lamda表达式出现的前提,Lamda表达式想重写函数式接口中的唯一方法。 函数式接口与Lambda表达式之间的关系:lambda表达式相当于是一个行为,传入函数式接口中,进来实现各种操作。 它们的接口内只有一个抽象方法,每一个函数式接口都有@FunctionalInterface注解。 文章目录1.消费型接口2.供给型接口3.函数型接...

Kevin.wang 3693

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java 8 函数式接口

1. 概述 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 提到函数式接口肯定少不了 lambda 表达式,函数式接口可以隐式的转换为 lambda 表达式。 我们可以选择向各种各样的方法和构造函数传递 lambda 表达式,包括在 Java 8 之前创建的一些方法和构造函数。因为 lambda 表达式在 Java 中表示为函数...

米奇罗 421

Java8的四大核心函数式接口

前言在学习一段时间后会不会有这样的疑问—难道我要用Lambda表达式的时候总要自己写函数式接口吗? 当然不是这样了,Java8里面提供了四大核心的函数式供我们使用!四大核心函数式接口测试代码 @Test public void testCoreInter(){ /** * @name 消费型接口 * @use Consumer<T>

未思 7799

Java 8 函数接口详细教程

Java 8 函数接口详细教程 本文介绍Java 8中各种函数接口,它们一般应用场景及标准API用法。 Lambdas 表达式 Java8 引入强大的新的语法升级是Lambdas表达式。Lambdas表达式是匿名函数,可视为语言的一等公民进行处理,如可以作为方法的参数或返回值。 Java 8 之前,我们通常为每种仅需封装单个功能场景要创建一个类。这导致很多不必要的模板代码来定义简单函数表达式。 所...

neweastsun的专栏 1782

【Java8】函数式接口

一、前言 早期的程序员在JDK1.5时期,掌握泛型、枚举、反射 基本上就可以了,随着JDK不断迭代升级,到相对于稳定的JDK1.8版本,扩展了大量的知识点,例如:lambda表达式,链式编程,函数式接口,Stream流式计算 这些新知识点的出现大大的简化了编程模型,减少了很多冗余代码,代码简洁,清晰明了,并且在迭代出来的底层架构大量得到了应用,所以,我们必须随着主流进行学习,避免阅读源码时都不知道其意。 二、函数式接口(Functional Interface) 函数式接口:只有一个方法的接口.

祝我飞黄腾达 3342

Java 8 四大函数式接口详解

函数式接口是只有一个抽象方法的接口。Java 8 通过注解来标识函数式接口。虽然这个注解不是强制性的,但建议使用它来确保接口符合函数式接口的定义。// 只有一个抽象方法表示接受一个输入参数并返回无结果的操作。表示一个无参数但返回一个结果的供给操作。T get();表示接受一个输入参数并返回一个结果的函数。表示一个接受输入参数并返回布尔值的断言。Java 8 的四大函数式接口(ConsumerSupplierFunctionPredicate)为函数式编程提供了强大的支持。

秃头之旅 2010

Java8四大函数接口

Java8四大函数接口的说明与使用详情

Leighteen 770

java8 函数接口

最近在做团队代码code review 的时候发现了有人使用了@FunctionalInterface 注解。我对这个注解不是很熟悉,基本上没用过。于是我就问对应的开发人员,给我讲一讲这个注解的用法,为什么要用这个注解?他讲的不太全,于是我就查询了一些资料,分享给大家! 在讲@FunctionalInterface 之前,我们先熟悉一下,什么是函数式接口(Functional I...

weixin_30718391的博客 156

Java8之函数式接口

简介 只定义一个抽象方法的接口,以函数式接口为参数的方法就可以使用Lambda表达式(Lambda表达式允许直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例)。函数式接口的抽象方法的签名称为函数描述符。 与Lambda之间的关联 函数式接口中的抽象方法的签名可以描述Lambda表达式的签名,如果没有符合条件的函数式接口的方法签名,那么此Lambda表达式是...

奋斗中的老青年 1590

Java8函数式接口

Java8函数式接口

YIYIYI 926

Java8——函数式接口

在 Runnable 接口中只声明了一个方法 void run(),我们使用匿名内部类来实例化函数式接口的对象,有了 Lambda 表达式,这一方式可以得到简化。但是在实践中,函数接口是非常脆弱的,只要有人在接口里添加多一个方法,那么这个接口就不是函数接口了,就会导致编译失败。在其他包中也有函数式接口,其中一些没有@FunctionalInterface 注解,但是只要符合函数式接口的定义就是函数式接口,与是否有@FunctionalInterface注解无关,注解只是在编译时起到强制规范定义的作用。

持之以恒! 683
上一篇: win10 安装mysql5.7 解压版本 一共就5步骤
下一篇: scala -- trait 特性 & 抽象类, 样例类简单了解和代码
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值