函数式接口

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

java框架里也在用它

在我们的java框架里,很多地方在用函数式接口,下面的线程类的部分代码
@FunctionalInterface public interface Runnable { /** * When an object
implementing interface <code>Runnable</code> is used * to create a thread,
starting the thread causes the object's * <code>run</code> method to be called
in that separately executing * thread. * <p> * The general contract of the
method <code>run</code> 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(); }

技术
©2019-2020 Toolsou All rights reserved,
菜狗的C++ primer读书笔记:第十章 泛型算法一个屌丝程序猿的人生(一百一十四)老程序员的忠告:一辈子靠技术前途堪忧Dubbo还是Spring-cloud?将来的架构你怎么选,两套方案对比 免费物流快递单号查询API接口及使用教程编程从推箱子开始Linux操作系统基础2020.04.26 第3章 分组关于JavaScript中的Object.values()的用法python中用turtle画爱心表白