Java8新特性(二)之函数式接口
.subTitle { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); border-top-left-radius: 7px; border-top-right-radius: 7px; color: rgba(255, 255, 255, 1); height: 1.8em; line-height: 1.8em; padding: 5px }
1. 什么是函数式接口
1) 只包含一个抽象方法的接口
2) 使用Lambda表达式去创建该对象。(若Lambda接口抛出一个受检异常,那么该异常需要在接口目标接口的抽象方法上进行声明)
3) 在任何函数式接口上使用@FunctionalInterface注解,可以检查该接口中是否是一个函数式接口。
2. 常用的JDK自定义的函数式接口(四大核心函数式接口)

1) Consumer<T> 消费型接口
对类型为T的对象应用操作,包含方法 void accept(T t);

2) Supplier<T> 供给型接口
返回类型为T的对象,包含方法: T get();

3) Function<T, R> 函数型接口
对类型为T的对象应用操作,并返回结果为R类型的对象,包含方法为: R apply(T t);

4)Predicate<T> 断定型接口
确定类型为T 的对象是否满足某约束,并返回类型boolean的值,包含方法为:boolean test(T t);

3. 自定义函数式接口
案例一:
/**
* 自定义函数接口
*/
@FunctionalInterface
public interface MyFunctional {
public int getValue();
}
使用测试:
public static void main(String[] args) {
List<Integer> intList = Arrays.asList(11,22,33,44,55);
for (Integer i : intList) {
MyFunctional myFunctional = () -> i;
System.out.println(myFunctional.getValue());
}
}
案例二(含泛型):
/**
* 待泛型的函数式接口
* @param <T>
* @param <R>
*/
@FunctionalInterface
public interface MyTwoArgsInterface<T, R> {
public R retRstr(T t1, T t2);
}
测试案例二:
@Test
public void test() {
MyTwoArgsInterface<Long, Long> mti = (t1, t2) -> {
return t1 + t2;
};
System.out.println(mti.retRstr(3l,4l));
}
Java8新特性(二)之函数式接口的更多相关文章
- java8新特性学习:函数式接口
本文概要 什么是函数式接口? 如何定义函数式接口? 常用的函数式接口 函数式接口语法注意事项 总结 1. 什么是函数式接口? 函数式接口其实本质上还是一个接口,但是它是一种特殊的接口:SAM类型的接口 ...
- Java8新特性探索之函数式接口
一.为什么引入函数式接口 作为Java函数式编程爱好者,我们都知道方法引用和 Lambda 表达式都必须被赋值,同时赋值需要类型信息才能使编译器保证类型的正确性. 我们先看一个Lambda代码示例: ...
- java8新特性 - 什么是函数式接口 @FunctionalInterface?
什么是函数式接口 @FunctionalInterface 源码定义 /** * An informative annotation type used to indicate that an int ...
- Java JDK1.8新特性之四大函数式接口
JDK 1.8的一些新特性 四大核心函数式接口(Consumer.Predicate.Supplier.Function),结合lambda表达式 import java.util.ArrayList ...
- 乐字节-Java8核心特性实战之函数式接口
什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口(Functional Interface)就是一个有且仅有一 ...
- Java8新特性第2章(接口默认方法)
在Java中一个接口一旦发布就已经被定型,除非我们能够一次性的更新所有该接口的实现,否者在接口的添加新方法将会破坏现有接口的实现.默认方法就是为了解决这一问题的,这样接口在发布之后依然能够继续演化. ...
- Java8新特性探索之Stream接口
一.为什么引入Stream流 流是一系列与特定存储机制无关的元素--实际上,流并没有"存储"之说.使用流,无需迭代集合中的元素,就可以从管道提取和操作元素.这些管道通常被组合在一起 ...
- JAVA 8 主要新特性 ----------------(四)Lambda函数式接口
一.什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口. 你可以通过 Lambda 表达式来创建该接口的对象.(若 Lambda 表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法 ...
- Java8 新特性(二)- Stream
Stream 用来处理集合数据的,通过 stream 操作可以实现 SQL 的拥有的大部分查询功能 Java8 API 官方文档 下面借助例子,演示 stream 操作 Java userList 列 ...
- 01 语言基础+高级:1-10 JDK8新特性_day12【函数式接口】
day12[函数式接口] 主要内容自定义函数式接口函数式编程常用函数式接口 教学目标能够使用@FunctionalInterface注解能够自定义无参无返回函数式接口能够自定义有参有返回函数式接口能够 ...
随机推荐
- oracle :如何测试数据库安装是否成功
要测试数据安装是否成功,可按顺序执行以下两个步骤: 测试步骤 1: 请执行操作系统级的命令: tnsping orcl (如果出现[TNS-03505:无法解析名称]的提示错误: 那就改为tnspi ...
- css题库(含答案)
tip:<为< 单选题 1.页面上的div标签,其HTML结构如下: <div id="father"> <p class="son&quo ...
- CentOS-关闭防火墙和禁用安全策略
关闭防火墙 默认使用的是firewall作为防火墙 查看防火墙状态 $ firewall-cmd --state 停止firewall $ systemctl stop firewalld.servi ...
- 自动化测试 如何快速提取Json数据
Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析. 使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析 ...
- C语言:文本文件和二进制文件
学习了 fopen() 函数后,我们知道它的第二个参数是一个字符串,用来表示文件打开方式.如果字符串中出现b,则表示以二进制方式打开文件:如果字符串中出现t,或者两者都不出现,则表示以文本方式打开文件 ...
- [刘阳Java]_MyBatis_注解基本用法_第10讲
MyBatis注解提出,可以说是非常好简化了MyBatis配置文件的使用.下面我们简单地来告诉大家如何使用MyBatis的注解 定义接口 package com.gxa.dao; import jav ...
- Python_结合Re正则模块爬虫
##### 爬取古诗文import reimport requestsdef parse_page(url): headers = { 'User-Agent':'Mozilla/5.0 (Windo ...
- python + Poium 库操作
1.支持pip安装 pip install poium 2.基本用法 from poium import PageElement,Page,PageElements# 1.poium支持的8种定位方法 ...
- springMVC-2-MVC初步了解
Spring MVC的特点 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼容性好,无缝结合 约定优于配置 功能强大:RESTful.数据验证.格式化.本地化.主题等 简洁灵活 ...
- PAT乙级:1061 判断题 (15分)
PAT乙级:1061 判断题 (15分) 题干 判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 ...