java8lambda表达式初识
一、函数式接口
只有一个 抽象方法 的 接口 叫函数式接口
/**
* @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表达式初识的更多相关文章
- java8---lambda表达式
语法糖 lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块).Lambda表 ...
- Java8Lambda表达式
“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个 ...
- Java基础一篇过(六)Java8--lambda表达式
一.简介 lambda表达式是Java8的一个重要特性,也可以称为闭包,常用于配合Java8的Stream对集合元素进行操作,使得代码更简介紧凑. 二.代码解析 虽说lambda表达式是一个新的特性, ...
- lambda表达式初识
简单来说,一般提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 而匿名函数就是没有名字的函数,有时函数只是临时一用,而且它的业务逻辑也相 ...
- Java 中的函数式编程(Functional Programming):Lambda 初识
Java 8 发布带来的一个主要特性就是对函数式编程的支持. 而 Lambda 表达式就是一个新的并且很重要的一个概念. 它提供了一个简单并且很简洁的编码方式. 首先从几个简单的 Lambda 表达式 ...
- python基础之协程函数、列表表达式、生成器表达式
一.协程函数 协程函数的定义?如果在一个函数内部yield的使用方式是表达式形式的话,如x=yield,那么该函数称为协程函数 协程函数补充: def init(func): def wrapper( ...
- Python之旅Day1 数据类型初识(数字|字符串|列表|数据运算) 编码 表达式(if...else|for|while)
初识PYTHON Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(吉多·范罗苏姆)于 ...
- 死磕Lambda表达式(一):初识Lambda
弱小和无知不是生存的障碍,傲慢才是.--<三体> 什么是Lambda表达式 Lambda表达式是表示可传递匿名函数的一种简洁方式,Lambda表达式没有名称,但是有参数列表.函数主体.返回 ...
- 初识Quartz(入门案例)+常用的Cron表达式
1.Quartz架构图 1.实体层 package cn.happy.entity; //1. public class Plan { //时间 private String date; //任务 p ...
随机推荐
- SQL Server ->> 生成时间类型的Partition Function和Partition Scheme代码
有时工作中要建个分区函数,可是像日期这种分区函数要是搞个几百个的值那不是要搞死我.于是写了点代码自动生成一个从1990年开始的按月的分区函数和对应的分区主题 USE [TestDB] GO DECLA ...
- 学习笔记-java 多线程
背景说明: 多线程并发与管理,是java基础知识里的重点,本文根据<java核心技术第八版>中的多线程技术的学习,对知识点进行整理:这里只对基础知识点进行简单罗列,以达到对知识点有网状关联 ...
- nodejs理解
一.nodejs介绍 nodejs主要体现在事件机制和异步IO,nodejs是事件驱动的: nodejs作用:js的运行环境.操作文件.链接数据库: nodejs在执行js是单线程的,但不是nodej ...
- 林锐:5 C++/C程序的基本概念
5.1.1 main 不能重载 不能内联 不能定义为static 不能取其地址 不能由用户直接调用 5.1.3内部名称 struct Sample_1 { int count; }; struct S ...
- windows网络模型之重叠IO的使用
大部分内容转载自https://blog.csdn.net/piggyxp/article/details/114883 目录: 1. 重叠模型的优点 2. 重叠模型的基本原理 3. 关于重叠模型的基 ...
- python:进程操作
一.多进程应用 import socket from multiprocessing import Process def talk(conn): conn.send(b'connected') re ...
- BZOJ2976:[POI2002]出圈游戏(exCRT)
Description 有编号从1到n的n个小朋友在玩一种出圈的游戏,编号为i+1的小朋友站在编号为i小朋友左边.编号为1的小朋友站在编号为n的小朋友左边.首先编号为1的小朋友开始报数,接着站在左边的 ...
- springboot(服务端接口)获取URL请求参数的几种方法
原文地址:http://www.cnblogs.com/xiaoxi/p/5695783.html 一.下面为7种服务端获取前端传过来的参数的方法 常用的方法为:@RequestParam和@Req ...
- js和.net操作Cookie遇到的问题
Cookie初探1.我理解中的Cookie1.1.Cookie存储位置是客户端的1.2.Cookie存储数据,数据大小也是有限制的 2.Cookie的用法2.1.js对Cookie的操作(网上很多我就 ...
- 【题解】洛谷P1006传纸条
链接 https://www.luogu.org/problemnew/show/P1006 日常牢骚 过年前最后一节课上完了坐标DP 也接触了一点区间DP(noi1995石子合并)下次做做看看吧 老 ...