函数式接口

就是在java8里允许你为一个接口(只有一个实现的,声明为FunctionalInterface注解的)实现一个匿名的对象,大叔感觉它与.net平台的委托很类似,一个方法里允许你接收一个方法签名,这个方法在一个声明为FunctionalInterface的接口里,并且它是接口里唯一的方法。

java框架里也在用它

在我们的java框架里,很多地方在用函数式接口,下面的线程类的部分代码

@FunctionalInterface

public interface Runnable {

/**

* When an object implementing interface Runnable is used

* to create a thread, starting the thread causes the object's

* run method to be called in that separately executing

* thread.

*

* The general contract of the method run is that it may

* take any action whatsoever.

*

* @see java.lang.Thread#run()

*/

public abstract void run();

}

事实上,在外部需要使用Runnable的实例时,可以直接构建一个匿名对象,像下面的代码是合法的

super.periodicCheck(new PassableRunnable() {

private boolean passed = false;

@Override

public boolean isPassed() {

return passed;

}

@Override

public void run() {

System.out.println("test async task");

passed = true;

}

});

下面是大叔在单元测试里写的一段实例代码,供大家学习和参考

@Test

public void testMethodFunction() {

java8Fun(new Run() {

@Override

public void print() {

System.out.println("类似.net里的委托!");

}

});

}

public void java8Fun(Run run) {

System.out.println("执行java8函数式接口");

run.print();

}

@FunctionalInterface

interface Run {

void print();

}

java中的ackerman_java8的函数式接口相关推荐

  1. 提高Java表达能力!不落伍一起掌握Java8中Lambda表达式、函数式接口及方法构造器数组引用

    文章目录 函数式接口概述 函数式接口示例 内置函数式接口 Lambda简述 Lambda语法 方法引用 构造器引用 数组引用 函数式接口概述 只包含一个抽象方法的接口,称为函数式接口. 可以通过 La ...

  2. comparator接口_8000字长文让你彻底了解 Java 8 的 Lambda、函数式接口、Stream 用法和原理

    我是风筝,公众号「古时的风筝」.一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  3. JDK8中的新特性——函数式接口

    JDK8 简介 概述 Java 8由Oracle从2014年3月18日发布,此版本是自Java 5(发布于2004年)之后的一个重量级版本,也是java发展史上的一个里程碑式的版本.这个版本在JVM. ...

  4. Java 内置核心四大函数式接口

    在java.util.function包内 , 有Java 内置核心四大函数式接口,可以使用lambda表达式 1.函数型接口(有一个输入,有一个输出) public class Demo1 {pub ...

  5. Java基础之四大核心函数式接口简单使用

    其实为了更好的使用lamda表达式,java在jdk1.8之后也添加了内置四大核心的函数式接口.什么是函数式接口以及lambda表达式可以看前面一篇 地址 Java内置的四大核心函数式接口如下: 函数 ...

  6. Java -Stream流和常见函数式接口

    概念 流(Stream)与集合类似,但集合中保存的是数据,而Stream中保存对集合或数组数据的操作. 特点 tream 自己不会存储元素. Stream 不会改变源对象.相反,他们会返回一个持有结果 ...

  7. Java新特性:Java8函数式接口与Lambda表达式(一)

    摘要 何为函数式接口? 什么是lambda表达式,lambda表达式的本质: 函数式接口与lambda表达式的联系:lambda是实现函数式接口的一个快捷方式,可以作为函数式接口的一个实例: 常用Ja ...

  8. java中io流实现哪个接口_第55节:Java当中的IO流-时间api(下)-上

    标题图 Java当中的IO流(下)-上日期和时间日期类:java.util.Date 系统时间:long time = System.currentTimeMillis();public class  ...

  9. Android+Java中使用RSA加密实现接口调用时的校验功能

    场景 RSA加密 RSA算法是一种非对称加密算法,那么何为非对称加密算法呢? 一般我们理解上的加密是这样子进行的:原文经过了一把钥匙(密钥)加密后变成了密文,然后将密文传递给接收方,接收方再用这把钥匙 ...

最新文章

  1. RabbitMQ 简介以及使用场景
  2. http://www.raytracegroundup.com/downloads.html 对该页的翻译。
  3. linux go 安装
  4. 深度学习到底有多难?掌握方法很重要!
  5. Java中的String类
  6. Chip Factory HDU - 5536
  7. calayer 与uiview
  8. V210 UART TX 流程
  9. python 单例模式的四种实现方法
  10. 第48课 加加乐 《小学生C++趣味编程》
  11. 【C/C++】知识点
  12. thisisunsafe的神奇之chrome浏览器打不开不安全的https网页
  13. finecms存在任意文件上传漏洞复现
  14. ES6 Symbol基本用法
  15. php 数字转换英文,PHP将英文数字转换为阿拉伯数字
  16. VSCode选中变量高亮颜色及注释颜色更改
  17. 基于 Docker 的 Slurm 作业管理系统
  18. 【SLAM】视觉SLAM:一直在入门,从未到精通
  19. 神经风格转移:Anaconda快速搭建DL框架学梵高(Van Gogh)绘画Ubuntu16.04 CPUGPU版
  20. 理解BPDU Guard的意义(BPDU Guard在全局配置与接口配置上的区别)

热门文章

  1. 【BZOJ4517】排列计数,组合数+错排
  2. 二叉树C++ | 实现删除节点_4
  3. bzoj1069 [SCOI2007]最大土地面积 凸包+单调性
  4. 【英语学习】【WOTD】smithereens 释义/词源/示例
  5. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (17) - 互联环路LLC
  6. vue一级分类和耳机分类_微服务项目第13天:商品分类业务的实现
  7. 电脑能玩和平精英吗_电脑玩和平精英灵敏度这样设置更流畅,还能匹配手机
  8. VS2005、VS2010等VS系列IDE在MFC开发过程中,Resource View标签打不开,问题为“opened in other editor”
  9. java swing双缓冲_java中的双缓冲技术
  10. python怎么制作游戏图片_【图片】从0开始学用Python做游戏的全过程【精品贴】(不定期更新)【python吧】_百度贴吧...