Java8新特性之函数式接口
2024-09-07 16:47:54
《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);
最新文章
- 无脑简单 命令升级git Centos
- Android开发--异步加载
- 两个list取不同值
- 年度榜单:2013年最佳免费 PSD 设计素材揭晓
- 【Codeforces 723B】Text Document Analysis 模拟
- html中span不显示背景
- JS给swf传参数
- R(一): R基础知识
- wordpress plugins collection
- cocos2d jsb 打包 Android APK
- 关于Python中的设计模式
- 在使用Kettle的集群排序中 Carte的设定——(基于Windows)
- Qt编译时MinGW去掉对gcc动态库的依赖(去掉对libgcc_s_dw2-1.dll,libstdc++-6.dll的依赖)
- 打开sa属性报错
- Navicat远程连接阿里云服务器的mysql
- PAM30 模拟登陆 投票
- OpenMP基础----以图像处理中的问题为例
- javascript学习(一)构建自己的JS库
- killall 、kill 、pkill 命令详解
- cf374C Inna and Dima dfs判环+求最长链
热门文章
- JavaScript的基础语法及DOM元素和事件
- StringUtils、CollectionUtils工具类的常用方法
- java class 字节码
- 14.Java连接Redis_Jedis_主从模式
- [SD心灵鸡汤]006.每月一则 - 2015.10
- 漫谈碎片化学习(Fragmentation learning)
- Java中的集合(五)继承Collection的List接口
- Rocket - jtag - JtagStateMachine
- Rocket - config - DefaultConfig
- 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……