上一篇博客介绍了java8新增的Lambda表达式,这一节介绍一下java8的函数式编程,两者之间有什么联系呢?请往下看~~~

Lambda表达式怎样在java类型中表示的呢?

语言设计者投入了大量的精力来思考怎样使现有的函数友好地支持lambda。终于採取的办法是:添加函数式接口的概念。函数式接口接口就是具有一个方法的普通接口。像这种

接口能够被隐式的转换为Lambda表达式!。。

每个Lambda表达式都相应一个 类型,一般是接口类型。而“函数式接口”是指只包括一个抽象方法的接口,每个该类型的lambda表达式都会被匹配到这个抽象方法。

由于默认方法不算抽象方法,所以你也能够给你的函数式接口加入默认方法。!

我们能够把Lambda表达式当作随意一个抽象方法的接口类型。你的接口达到这个要求。你仅仅须要给你的接口加入@FunctionalInterface注解,编译器假设发现你标注了这个注解的接口有多于一个接口的时候会报错!!

看一下以下函数式编程的样例:

package com.panther.dong.java8.functional;

/**
* Created by panther on 15-8-22.
*/
public class FunctionTest {
public static void main(String[] args) {
Converter<String, Integer> converter = (from) -> Integer.parseInt(from);
Integer integer = converter.convert("231");
System.out.println(integer);
}
} @FunctionalInterface
interface Converter<F, T> {
T convert(F from);
}

执行结果:

231

注意:接口中的默认方法和静态方法并不会影响函数式接口的规定。能够随意使用,可是普通方法仅仅能有一个

java8新增特性(二)----函数式接口(Functional)的更多相关文章

  1. 乐字节-Java8新特性之函数式接口

    上一篇小乐带大家学过 Java8新特性-Lambda表达式,那什么时候可以使用Lambda?通常Lambda表达式是用在函数式接口上使用的.从Java8开始引入了函数式接口,其说明比较简单:函数式接口 ...

  2. Java8新特性之函数式接口

    <Java 8 实战>学习笔记系列 定义 函数式接口只定义一个抽象方法,可以有多个默认方法 函数式接口的接口名上,会被@FunctionalInterface标注 作用 函数式接口的方法可 ...

  3. Java8 函数式接口-Functional Interface

    目录 函数式接口: JDK 8之前已有的函数式接口: 新定义的函数式接口: 函数式接口中可以额外定义多个Object的public方法一样抽象方法: 声明异常: 静态方法: 默认方法 泛型及继承关系 ...

  4. java8函数式接口(Functional Interface)

    介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代 ...

  5. java8学习之深入函数式接口与方法引用

    函数式接口: 函数式接口[FunctionalInterface]是整个Lambda表达式的一个根源,换句话来说java8中的Lambda表达式要想彻底掌握,前提是要彻底理解好函数式接口,所以这次继续 ...

  6. Java8一Lambda与函数式接口

    关于Lambda表示在工作学习中会经常用到,但并没有全面的去了解.在这里做一个较为详细的记录供以后学习查阅.主要参考Java 8 Lambda 表达式 引言 Java8之前,我们在使用Runnale创 ...

  7. Java 8函数式接口functional interface的秘密

    Java 8函数式接口functional interface的秘密 2014年10月29日 17:52:55 西瓜可乐520 阅读数:3729   目录 [−] JDK 8之前已有的函数式接口 新定 ...

  8. Java8 Lambda表达式、函数式接口和方法引用

    目录 Java8 Lambda表达式和函数式接口 Lambda表达式 Lambda的使用 函数式接口FunctionalInterface Java内置四大核心函数式接口 方法引用 构造器引用 Jav ...

  9. Java中的函数式编程(二)函数式接口Functional Interface

    写在前面 前面说过,判断一门语言是否支持函数式编程,一个重要的判断标准就是:它是否将函数看做是"第一等公民(first-class citizens)".函数是"第一等公 ...

随机推荐

  1. 轻松掌握Ubuntu Linux的3D桌面快捷键使用

    视频下载地址: http://115.com/file/be4n23v6#linux3d.rar 轻松掌握Ubuntu Linux的3D桌面快捷键使用 高级3D桌面展示 本文出自 "李晨光原 ...

  2. Linux下通过.desktop 文件创建桌面程序图标及文件编写方式(Desktop Entry文件概述)

    Linux下通过.desktop 文件创建桌面程序图标及文件编写方式 1.Desktop Entry文件概述:在 Windows 平台上,用户可以通过点击位于桌面或菜单上的快捷方式轻松打开目标应用程序 ...

  3. Hexo 自动同步

    灵感 最近认证阿里云学生用户,参与ESC服务器9.9元/月的活动,准备先搭建一个博客网站,写写自已的心得以及经验.之前也搭建过网站,最后由于个人没时间(没时间是假的,就是懒.哈哈)的原因导致最后服务器 ...

  4. Java基础关于Map(字典)的方法使用

    Java基础关于Map(字典)的方法使用 java中一般用map与hashmap来创建一个key-value对象 使用前提是要导入方法包: import java.util.HashMap: impo ...

  5. 实例讲解Nginx下的rewrite规则 来源:Linux社区

    一.正则表达式匹配,其中:* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配二.文件及目录匹配,其中:* -f和!-f用来判断是否存在文件* ...

  6. Swift学习笔记(4)--字符串及基本使用

    String是例如“hello, world”,“海贼王” 这样的有序的Character(字符)类型的值的集合,通过String类型来表示. Swift 的String类型与 Foundation  ...

  7. Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql

    查看服务器的系统版本 # cat /etc/issue 查看服务器是64位还是32位 #uname -a      或者用:#getconf LONG_BIT 查看当前有没有安装jdk #rpm -q ...

  8. ASP.NET通过JavaScript实现Button 的Enabled=false

    正常代码控制无法满足需求,所以记录一下方法: <input id="Button5" onclick=" CX()" type="button& ...

  9. 77.深入理解nodejs中Express的中间件

    转自:https://blog.csdn.net/huang100qi/article/details/80220012 Express是一个基于Node.js平台的web应用开发框架,在Node.j ...

  10. 7.Web Service 调用天气代码

    1. 2500多个城市天气预报 WEB服务公用事业 Endpoint:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx Disco: ...