.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) 只包含一个抽象方法的接口

  2) 使用Lambda表达式去创建该对象。(若Lambda接口抛出一个受检异常,那么该异常需要在接口目标接口的抽象方法上进行声明)

  3) 在任何函数式接口上使用@FunctionalInterface注解,可以检查该接口中是否是一个函数式接口。

2. 常用的JDK自定义的函数式接口(四大核心函数式接口)

    

  1) Consumer<T> 消费型接口

    对类型为T的对象应用操作,包含方法 void accept(T t);

    

  2) Supplier<T> 供给型接口

    返回类型为T的对象,包含方法: T get();

    

  3) Function<T, R> 函数型接口

    对类型为T的对象应用操作,并返回结果为R类型的对象,包含方法为: R apply(T t);

    

  4)Predicate<T> 断定型接口

    确定类型为T 的对象是否满足某约束,并返回类型boolean的值,包含方法为:boolean test(T t);

    

3. 自定义函数式接口

案例一:

/**
* 自定义函数接口
*/
@FunctionalInterface
public interface MyFunctional {
public int getValue();
}

使用测试:

 public static void main(String[] args) {
List<Integer> intList = Arrays.asList(11,22,33,44,55);
for (Integer i : intList) {
MyFunctional myFunctional = () -> i;
System.out.println(myFunctional.getValue());
} }

案例二(含泛型):

/**
* 待泛型的函数式接口
* @param <T>
* @param <R>
*/
@FunctionalInterface
public interface MyTwoArgsInterface<T, R> {
public R retRstr(T t1, T t2);
}

测试案例二:

    @Test
public void test() {
MyTwoArgsInterface<Long, Long> mti = (t1, t2) -> {
return t1 + t2;
};
System.out.println(mti.retRstr(3l,4l));
}

最新文章

  1. 一个windows下的ddos样本
  2. Json与javaBean之间的转换工具类
  3. ASP.NET使用ConfigurationSection在Web.Config创建自定义配置节集合
  4. ubuntu安装erlang
  5. SVN cleanup操作反复失败解决办法
  6. 需要弥补的那部分SQL
  7. 与众不同 windows phone (51) - 8.1 新增控件: DatePickerFlyout, TimePickerFlyout
  8. 【leetcode❤python】226. Invert Binary Tree
  9. 通过Maven找java source源码方法
  10. Java多线程-工具篇-BlockingQueue
  11. 分享10款激发灵感的最新HTML5/CSS3应用
  12. 组合控件 圆环 ring
  13. Latex调整行距
  14. 通常编译亲测56Y国际象棋源代码,精仿56Y国际象棋完整的源代码下载!
  15. Zabbix之配置文件详解
  16. Function.prototyoe.call.apply
  17. nginx 日志分析工具goaccess
  18. 主席树套树状数组——带修区间第k大zoj2112
  19. Wannafly挑战赛14 C.可达性(tarjan缩点)
  20. C#综合揭秘——分部类和分部方法

热门文章

  1. nginx开启tls1.2及一些注意问题
  2. easyui的combobox的onChange事件的实现
  3. MYSQL_Join注入技巧
  4. 深入理解Java并发类——AQS
  5. 基于Flink构建全场景实时数仓
  6. &quot;Shortest&quot; pair of paths[题解]
  7. Linux下面向TCP连接的C++ Socket编程实例
  8. Automation Framework Design 自动化框架设计思想
  9. 高校表白App-团队冲刺第二天
  10. 微信小程序云开发-数据库-获取用户添加的数据到数据库