《Java 8 实战》学习笔记系列

定义

函数式接口只定义一个抽象方法,可以有多个默认方法

函数式接口的接口名上,会被@FunctionalInterface标注

作用

函数式接口的方法可以应用在Lambda表达式,例如Comparable、 Runnable和Callable等,

这种抽象方法被称为函数描述符

示例

比较器

java.util.Comparator
public interface Comparator<T> {
int compare(T o1, T o2);
}

可以写成

Comparator<Apple> c = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight());

参数可以进一步省略

Comparator<Apple> c = (a1, a2) -> a1.getWeight().compareTo(a2.getWeight());

线程

Runnable

public interface Runnable{
void run();
}

可以写成

(参数) -> {方法体}

新函数式接口

Predicate

@FunctionalInterface
public interface Predicate<T>{
boolean test(T t);
}

谓词接口Predicate有一个抽象方法test,它接受泛型T对象,并返回一个boolean,可以用在筛选时判断是否符合预期

示例:

判断参数是否为空

Predicate<String> nonEmptyStringPredicate = (String s) -> !s.isEmpty();
List<String> nonEmpty = filter(listOfStrings, nonEmptyStringPredicate); Predicate<String> p = s -> list.add(s);

Consumer

@FunctionalInterface
public interface Consumer<T>{
void accept(T t);
}

抽象方法accept,它接受泛型T的对象,没有返回( void),可以用在调用无返回的方法

示例:

逐条打印数据

Consumer<String> b = s -> list.add(s);

Function

@FunctionalInterface
public interface Function<T, R>{
R apply(T t);
}

抽象方法apply,接受一个泛型T的对象,并返回一个泛型R的对象,可用作转换类型

示例:

Function<String, Integer> stringToInteger =
(String s) -> Integer.parseInt(s);

最新文章

  1. 无脑简单 命令升级git Centos
  2. Android开发--异步加载
  3. 两个list取不同值
  4. 年度榜单:2013年最佳免费 PSD 设计素材揭晓
  5. 【Codeforces 723B】Text Document Analysis 模拟
  6. html中span不显示背景
  7. JS给swf传参数
  8. R(一): R基础知识
  9. wordpress plugins collection
  10. cocos2d jsb 打包 Android APK
  11. 关于Python中的设计模式
  12. 在使用Kettle的集群排序中 Carte的设定——(基于Windows)
  13. Qt编译时MinGW去掉对gcc动态库的依赖(去掉对libgcc_s_dw2-1.dll,libstdc++-6.dll的依赖)
  14. 打开sa属性报错
  15. Navicat远程连接阿里云服务器的mysql
  16. PAM30 模拟登陆 投票
  17. OpenMP基础----以图像处理中的问题为例
  18. javascript学习(一)构建自己的JS库
  19. killall 、kill 、pkill 命令详解
  20. cf374C Inna and Dima dfs判环+求最长链

热门文章

  1. JavaScript的基础语法及DOM元素和事件
  2. StringUtils、CollectionUtils工具类的常用方法
  3. java class 字节码
  4. 14.Java连接Redis_Jedis_主从模式
  5. [SD心灵鸡汤]006.每月一则 - 2015.10
  6. 漫谈碎片化学习(Fragmentation learning)
  7. Java中的集合(五)继承Collection的List接口
  8. Rocket - jtag - JtagStateMachine
  9. Rocket - config - DefaultConfig
  10. 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……