在前面几篇简单介绍了一些Lambda表达式得好处与语法,我们知道使用Lambda表达式是需要使用函数式接口得,那么,岂不是在我们开发过程中需要定义许多函数式接口,其实不然,java8其实已经为我们定义好了4类内置函数式接口,这4类接口其实已经可以解决我们开发过程中绝大部分的问题,只有一小部分比较特殊得情况需要我们自己去定义函数式接口,本文就简单来学习一下java8内置得4大核心函数式接口. 一.Consumer<T>:消费型接口(void accept(T t)) 来看一个简单得例子: /**…
java8新特性-四大内置核心接口 四大内置核心接口 //消费型接口 Consumer<T>:: vode accept(T t); //供给型接口 Supplier<T>:: T get(); //函式型接口 Function<T,R>:: R apply(T t); //断言型接口 Predicate<T>:: boolean test(T t); 消费型接口 @Test public void test() { addMoney(20, (m) -&g…
Consumner : 消费型接口 Supplier :供给型接口 Function:函数式接口 Predicate:断言型接口 其他接口: 四大内置核心函数式接口: Consumner : 消费型接口 Supplier :供给型接口 Function Consumner<T> : 消费型接口 void accept(T t); 用途:对类型为T的对象应用操作,包含方法:void accept(T t); 输出: 购物消费10000.0元 Supplier<T> :供给型接口 T…
Java8新特性--四大内置函数式接口 预备知识 背景 Lambda 的设计者们为了让现有的功能与 Lambda 表达式良好兼容,考虑了很多方法,于是产生了函数接口这个概念. 什么是函数式接口? 函数式接口指的是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,这样的接口可以隐式转换为 Lambda 表达式. 但是在实践中,函数式接口非常脆弱,只要某个开发者在该接口中添加一个函数,则该接口就不再是函数式接口进而导致编译失败.为了克服这种代码层面的脆弱性,并显式说明某个接口是函数式接口,J…
可以把这些函数式接口作为方法的参数. 1.0 核心内置函数式接口一: 消费型接口@FunctionalInterfacepublic interface Consumer<T> { void accept(T t); default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after); return (T t) -> { accept(t); after.ac…
.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) 只包…
Java内置的四大核心函数式接口 Consumer:消费型接口 对类型为T的对象应用操作,包含方法:void accept(T t) public class TestLambda02 { public static void main(String[] args) { testConsumer(9999, (x) -> { System.out.println("打游戏花费:" + x); }); } public static void testConsumer(double…
在上一篇文章中我们介绍了JDK1.8的新特性有以下几项. 1.Lambda表达式 2.方法引用 3.函数式接口 4.默认方法 5.Stream 6.Optional类 7.Nashorm javascript引擎 8.新的日期时间API 9.Base64 之前学习了前面两项Lambda表达式,方法引用,这一篇学习函数式接口. 所谓的函数式接口它只能定义一个抽象方法,其他方法可以用default或者static关键对方法进行限定. 下面先来通过实例来验证一下. 自定义一个函数式接口,然后定义一个叫…
一.Java8新特性概述 1.Lambda 表达式 2. 函数式接口 3. 方法引用与构造器引用 4. Stream API 5. 接口中的默认方法与静态方法 6. 新时间日期 API 7. 其他新特性 // 其他例如HashMap在JDK8中的提升,将会在HashMap的章节进行拓展  二.Lambda表达式 1.为什么使用Lambda Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码 像数据一样进行传递). 可以写出更简洁.更 灵活的代码. 2…
一.为什么引入函数式接口 作为Java函数式编程爱好者,我们都知道方法引用和 Lambda 表达式都必须被赋值,同时赋值需要类型信息才能使编译器保证类型的正确性. 我们先看一个Lambda代码示例: x -> x.toString() 我们清楚这里返回类型必须是 String,但 x 是什么类型呢? Lambda 表达式包含类型推导(编译器会自动推导出类型信息,避免了程序员显式地声明),编译器必须能够以某种方式推导出 x 的类型以生成正确的代码. 同样方法引用也存在此问题,假设你要传递 Syst…