java lambda函数类型_java8-lambda-函数式接口及四大类型函数接口
函数式接口@FunctionalInterface
作用:
该接口标记了引用的接口是一个
函数式接口(SAM:Single Abstract Interface)
即接口内只能有一个抽象方法、可以有一个默认方法、多个静态方法
方法可以使用lambda表达式来传入方法进行调用。
示例:
@FunctionalInterface
public interface TestFunctionalInterface {
int accept(int t);
default int defaultAccept(int t) {
return t + 1;
}
static void staticMethod1() {
System.out.println("test============");
}
static void staticMethod2() {
System.out.println("test1===========");
}
}
class Test {
public static void main(String[] args) {
int result = getResult(10, a -> a + 2);
System.out.println(result);
result = getDefaultResult(10, a -> a);
System.out.println(result);
TestFunctionalInterface.test();
}
private static int getResult(int i, TestFunctionalInterface functionalInterface) {
return functionalInterface.accept(i);
}
private static int getDefaultResult(int i, TestFunctionalInterface functionalInterface) {
return functionalInterface.defaultAccept(i);
}
}
总结:
@FunctionalInterface接口充当标记作用,显式的声明了一个接口只允许一个抽象方法
Consumer接口
(java.util.function.Consumer)
定义了一个accept方法,1个入参无出参。
引申的Consumer接口也是没有出参的。
接口
入参类型
Consumer
T
IntConsumer
int
LongConsumer
long
DoubleConsumer
double
ObjDoubleConsumer
T,double
ObjIntConsumer
T,int
ObjLongConsumer
T,long
BiConsumer
T,U
Consumer的使用
Consumer意味着消费,java这里定义的方法是没有返回值的,只有一个入参。
所以在实际使用的过程中,consumer接口可以用来提交一个无需结果的一个方法。
首先定义一个方法,无返回值,一个对象参数,一个Consumer接口参数。
private static void testConsumer(int a , Consumer action){
action.accept(a);
}
在main方法里调用这个方法,传一个int参数,即lambda表达式作为入参 。
public static void main(String[] args) {
testConsumer(30 , p->{
System.out.println(p);
});
}
其中 p->{},这一块代码为Consumer接口的里accept方法的具体实现,这里将方法作为参数传入到
testConsumer(int a , Consumer action)方法内。
当然,传入的方法只是做了一个简单的打印。
Function接口
(java.util.function.Function)
定义了一个apply方法,1个入参1个出参。
引申的Function接口也是有出参的。
接口
入参类型
出参类型
Function
T
R
DoubleFunction
double
R
IntFunction
int
R
LongFunction
long
R
ToDoubleFunction
T
double
ToIntFunction
T
int
ToLongFunction
T
long
DoubleToIntFunction
double
int
DoubleToLongFunction
double
long
IntToDoubleFunction
int
double
IntToLongFunction
int
long
LongToDoubleFunction
long
double
LongToIntFunction
long
int
BiFunction
T,U
R
ToDoubleBiFunction
T,U
double
ToIntBiFunction
T,U
int
ToLongBiFunction
T,U
long
Predicate接口
(java.util.function.Predicate)
定义了一个test方法,1个入参,一个boolean出参
引申的Predicate接口也是boolean出参
接口
入参类型
Predicate
T
DoublePredicate
double
IntPredicate
int
LongPredicate
long
BiPredicate
T,U
Supplier接口
(java.util.function.Supplier)
定义了一个get方法,无入参1个出参。
引申的Supplier接口也是有出参的。
接口
出参类型
Supplier
T
BooleanSupplier
boolean
DoubleSupplier
double
IntSupplier
int
LongSupplier
long
java lambda函数类型_java8-lambda-函数式接口及四大类型函数接口相关推荐
- python内置高阶函数求导_Python——函数式编程、高阶函数和内置函数,及
Python--函数式编程.高阶函数及内置函数 函数式编程 一.不可变数据:不用变量保存状态不修改变量 二.第一类对象:函数即"变量" 1.函数名可以当做参数传递 2.返回值可以是 ...
- 技术图文:Python 匿名函数 VS. C# Lambda表达式
背景 前段时间在知识星球上立了一个Flag,至少写10篇关于 Python,Matlab 和 C# 对比的总结. 这是第 2 篇,从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的La ...
- Java Lambda(语言篇——lambda,方法引用,目标类型,默认方法,函数接口,变量捕获)
深入理解Java 8 Lambda(语言篇--lambda,方法引用,目标类型和默认方法) 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout ...
- 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...
- java 拉姆表达式_Java8 lambda表达式10个示例
Java 8 lambda表达式示例 转自importNew 原文链接 例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现R ...
- Java中lambda表达式去重_JAVA8中Lambda和Stream
Java8于2014年3月份发布,其主要更新的特性有:函数式接口.Lambda 表达式.集合的流式操作.注解的更新.安全性的增强.IO\NIO 的改进.完善的全球化功能等,本文将介绍Lambda表达式 ...
- Jdk1.8新特性(二)——lambda表达式(参数列表)-{}和函数式接口@FunctionalInterface
Jdk1.8新增lambda表达式是为了简化代码,主要用于简化匿名实现类,为其提供一种更加简洁的写法.Lambda表达式在swift语言中被称为代码块,lambda表达式可以认为是一种特殊的接口,是匿 ...
- Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法...
1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算 ...
- java三目表达式_Java8新特性Lambda表达式
1 Lambda表达式 对于很多计算机语言来说,Lambda表达式并不是陌生的语法格式,而对于Java而言,它的到来比较晚,直到Java8更新之后,Lambda表达式才正式出现在Java语法中.所以如 ...
最新文章
- python学成需要多久-小白学python怎么快速入门?多久能完成一个项目?
- 数据结构图之二(最小生成树--克鲁斯卡尔算法)
- python第三方插件登录网易音乐_python3-使用requests模拟登录网易云音乐
- 简述机器指令与微指令之间的关系_SAP Marketing Cloud功能简述(四) 线索和客户管理...
- 由几个月前写的(验证码利用ashx一般处理程序来做),修改为不用以一般处理程序...
- docker部署kafka,k8s(helm)部署kafka
- 折腾一天,获取下列多选框的所有选中值,原生js可直接通过obj.val()来获取,可jq不行,要通过循环取值来获取;...
- transient、volatile关键字
- Ali-Tomcat 安装
- 只有运用你的逻辑才能看懂其中的恐怖及答案
- 最新kali之hping3
- 哈希表实现电话号码查询系统
- pwnable.kr_mistake
- 马未都说收藏:陶瓷篇(6、7)宋代八大民窑
- katacontainers网络文件系统分析
- LTE的核心网之:MME,SGW,PGW
- 基于VUE+H5PLUS 实现app交互蓝牙打印机得功能
- win10安装quicktime
- android kingroot一键root工具,一键root大师
- Linux运维:推荐八款Linux远程连接工具