一、函数式接口

只有一个 抽象方法接口 叫函数式接口

/**
* @auther hhh
* @date 2018/12/24 22:20
* @description 函数式接口:只有 一个 抽象方法 的接口叫函数式接口
* default、static、Object中的方法除外,其他的抽象方法
*/
@FunctionalInterface//注解:java8提供的,只能标注在函数式接口之上,如果这个类不是一个函数式接口,就会报错
public interface UserMapper {
int insert();//只有一个insert()的接口是函数式接口,他就一个抽象方法
default int update() {//不是函数式接口
return 1;
}
static int delete() {//不是函数式接口
return 1;
}
//Object中的方法都不是函数式接口(与Object中一样的方法),例如:
public int hashCode();
/**
* jdk1.8之前的一些函数式接口
* 1、java.lang.Runable
* 2、java.util.Comparator
* 3、java.util.concurrent.Callable
*/
}

 二、java8中最重要的函数式接口

java8将函数式接口存放在 External Libraries->rt.jar->java->util->function包中,以下函数式接口是非常重要的。

  • Supplier<T> 代表一个输出
  • Consumer<T> 代表一个输入(一个消费)
  • BiConsumer<T, U> 代表两个输入
  • Function<T, R> 代表一个输入一个输出,T 是输入 R 是输出(输入输出是不同类型)
  • UnaryOperator<T> extends Function<T, T> 继承 Function,但是没有添加方法,只是将输入输出变成同一种T类型(输入输出是同种类型)
  • BiFunction<T, U, R> 代表两个输入一个输出(一般是输入和输出是不同类型的)
  • BinaryOperator<T> extends BiFunction<T,T,T> 代表两个输入一个输出(输入和输出的类型是一致的,类型都是 T )

一般有Bi的代表两个的意思

总结:学习lambda表达式,最重要的是泛型与函数式接口

java8lambda表达式初识的更多相关文章

  1. java8---lambda表达式

    语法糖 lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块).Lambda表 ...

  2. Java8Lambda表达式

    “Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个 ...

  3. Java基础一篇过(六)Java8--lambda表达式

    一.简介 lambda表达式是Java8的一个重要特性,也可以称为闭包,常用于配合Java8的Stream对集合元素进行操作,使得代码更简介紧凑. 二.代码解析 虽说lambda表达式是一个新的特性, ...

  4. lambda表达式初识

    简单来说,一般提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 而匿名函数就是没有名字的函数,有时函数只是临时一用,而且它的业务逻辑也相 ...

  5. Java 中的函数式编程(Functional Programming):Lambda 初识

    Java 8 发布带来的一个主要特性就是对函数式编程的支持. 而 Lambda 表达式就是一个新的并且很重要的一个概念. 它提供了一个简单并且很简洁的编码方式. 首先从几个简单的 Lambda 表达式 ...

  6. python基础之协程函数、列表表达式、生成器表达式

    一.协程函数 协程函数的定义?如果在一个函数内部yield的使用方式是表达式形式的话,如x=yield,那么该函数称为协程函数 协程函数补充: def init(func): def wrapper( ...

  7. Python之旅Day1 数据类型初识(数字|字符串|列表|数据运算) 编码 表达式(if...else|for|while)

    初识PYTHON Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(吉多·范罗苏姆)于 ...

  8. 死磕Lambda表达式(一):初识Lambda

    弱小和无知不是生存的障碍,傲慢才是.--<三体> 什么是Lambda表达式 Lambda表达式是表示可传递匿名函数的一种简洁方式,Lambda表达式没有名称,但是有参数列表.函数主体.返回 ...

  9. 初识Quartz(入门案例)+常用的Cron表达式

    1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...

随机推荐

  1. 使用命令行执行.sql文件

    用微软自带的sqlcmd工具,可以导入执行.以SQL Server 2008R版本为例: 第一步:Win+R 键入:cmd 命令,开启命令行工具: 第二步:键入:cd C:\Program Files ...

  2. SqlServer50条常用查询语句

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  3. jvm 的性能调优

    一个描述的比较生动的博客:JVM内存区域划分Eden Space.Survivor Space.Tenured Gen,Perm Gen解释 地址:https://www.cnblogs.com/sg ...

  4. Flask入门request session cookie(二)

    1 HTTP方法分类 1 GET 浏览器告知服务器:只获取页面上的信息并发给我.这是最常用的方法. 2 HEAD 浏览器告诉服务器:欲获取信息,但是只关心消息头 .应用应像处理 GET 请求一样来处理 ...

  5. SpringMvc-helloword

    说明:在此只说明helloword的简单实现,通过helloword例子先了解springMvc是这样工作的,然后在一步步的研究原理 配置web.xml 1.配置servlet servlet-cla ...

  6. Android(java)学习笔记48:通过反射获得带参构造方法并且使用

    1. 反射获得带参构造方法并且使用: (1)获取字节码文件对象       Class c = Class.forName("cn.itcast_01.Person"); (2)获 ...

  7. Android(java)学习笔记41:Map集合功能概述

    1. 下面通过代码引入Map集合: 如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生 ...

  8. Hive创建外部表以及分区

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sheismylife/article/details/27874943 创建带分区的外部表 创建外部 ...

  9. MySQL:数据库入门篇1

    1,什么是数据库?——存储数据的仓库 数据库技术是计算机应用领域中非常重要的技术,它产生于20世纪60年代末,是数据管理的最新技术,也是软件技术的一个重要分支. 简单的说,数据库就是一个存放数据的仓库 ...

  10. 郑州集训Day4 [小Cat与小鲜肉]

    考试的时候由于没有想出这道题就弃疗了 发现主要还是自己姿势不够 [问题描述] \(P\) 校某宿舍人才辈出,其舍长图书馆男神因被偷拍侧身照而在网络上一票走红. 小鲜肉 \(SJY\) 是小 \(Cat ...