Java Development Kit 8 has a number of functional interfaces. Here we review the starter set—the interfaces we frequently encounter and need to first get familiar with. All the interfaces we see here are part of the java.util.function package.

Consumer<T>

Description

Represents an operation that will accept an input and returns nothing. For this to be useful, it will have to cause side effects.

Abstract method

accept()

Default method(s)

andThen()

Popular usage

As a parameter to the forEach() method

Primitive specializations

IntConsumer, LongConsumer, DoubleConsumer, …

Supplier<T>

Description

A factory that’s expected to return either a new instance or a precreated instance

Abstract method

get()

Default method(s)

Popular usage

To create lazy infinite Streams and as the parameter to the Optional class’s orElseGet() method

Primitive specializations

IntSupplier, LongSupplier, DoubleSupplier, …

Predicate<T>

Description

Useful for checking if an input argument satisfies some condition

Abstract method

test()

Default method(s)

and(), negate(), and or()

Popular usage

As a parameter to Stream’s methods, like filter() and anyMatch()

Primitive specializations

IntPredicate, LongPredicate, DoublePredicate, …

Function<T, R>

Description

A transformational interface that represents an operation intended to take in an argument and return an appropriate result

Abstract method

apply()

Default method(s)

andThen(), compose()

Popular usage

As a parameter to Stream’s map() method

Primitive specializations

IntFunction, LongFunction, DoubleFunction, IntToDoubleFunction, DoubleToIntFunction, …

Starter Set of Functional Interfaces的更多相关文章

  1. Lambda Expressions and Functional Interfaces: Tips and Best Practices

    转载自https://www.baeldung.com/java-8-lambda-expressions-tips 1. Overview   Now that Java 8 has reached ...

  2. Functional Programming without Lambda - Part 1 Functional Composition

    Functions in Java Prior to the introduction of Lambda Expressions feature in version 8, Java had lon ...

  3. java functional syntax overview

    Defining a Functional Interface @FunctionalInterface public interface TailCall<T> { TailCall&l ...

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

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

  5. Chapter 7 -- Functional

    Caveats 说明 As of Java 7, functional programming in Java can only be approximated through awkward and ...

  6. 深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)

    作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://zh.lucida.me/blog/java-8-lambdas-insideout-language- ...

  7. Java资源大全中文版(Awesome最新版)

    Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站 ...

  8. Java 8新特性-1 函数式接口

    Java 8 引入的一个核心概念是函数式接口(Functional Interfaces). 通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行. 如果一个接口定义个唯一一个抽象方法,那么这 ...

  9. JDK各个版本的新特性jdk1.5-jdk8

    JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一 ...

随机推荐

  1. tomcat 默认项目设置

    正常情况下,我们启动tomcat后,直接输入“http://localhost:端口/“ 后,默认访问道是webapp目录下的ROOT应用. 我们要通过上述方式访问自己的应用,有俩种方式. 第一:把自 ...

  2. VS2010安装中遇到的错误

    背景 用win7 64位系统安装VS2010遇到一个错误,网上查了各种资料也没有找到这种解决办法,后来自己找到了解决办法,分享一下,让他人少走一些弯路. 错误信息 安装过程中遇到如下错误: [08/2 ...

  3. angularjs指令中的compile与link函数详解(转)

    http://www.jb51.net/article/58229.htm 通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link, ...

  4. 【Struts】服务器文件的上传和下载

    Java中获得文件的文件后缀 import java.io.*; public class FileTest{ public static void main(String args[]){ File ...

  5. android的R.java

    R.java是个好东西,在Android程序开发过程中为你统一管理资源,添加ID,不可谓不犀利.不过有的时候好东西就越是娇贵,在写Android代码的时候,R.java频繁出错,搞得我是身心俱疲.数次 ...

  6. 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"

    转载自原文 未能加载文件或程序集"Oracle.DataAccess, Version=2.112.1.0,..." 若本机的Oracle版本是32位系统,则在调用Oracle数据 ...

  7. bjfu1208 中位数

    题目是给你一个数x以及一个长度为n的数列,让你往数列里插入y个数,使数列的中位数正好是x,求y的最小值.(其实这题的中位数跟数学里的中位数有一点区别,略去不提) 那么就排完序以后分情况讨论一下就好了. ...

  8. IOS block 记录

    1.需要使用 @property(....,copy) 而不是其他的 2.self.request=[ASIHTTPRequest requestWithURL:[NSURL URLWithStrin ...

  9. html 5新特性 --用SVG绘制的微信logo

    一个简单的SVG绘制图片的小案例. 效果图: 代码如下: <style> * { ; ; } body { background-color: #d5d3d4; } .container ...

  10. [LeetCode] Ugly Number II (A New Question Added Today)

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...