简介
简介
参数列表 -> 表达式
参数列表 -> {表达式集合}
// 1. 返回给定字符串的长度(隐含return语句)
(String s) -> s.length()
// 2. 始终返回42的无参方法(隐含return语句)
() -> 42
// 3. 包含多行表达式,需用花括号括起来,并显示添加return
(int x, int y) -> {
int z = x * y;
return x + z;
}
需要符合条件
- 函数式接口定义为仅含有一个抽象方法的接口, 需要注意一点的是 java 8th 为接口的定义引入了默认的方法,我们可以用 default 关键字在接口中定义具备方法体的方法, 这个default不算。
例子
行为参数化处理, 参数化处理更灵活
// 过滤器
public interface AppleFilter {
boolean accept(Apple apple);
}
// 应用过滤器的筛选方法
public static List<Apple> filterApplesByAppleFilter(List<Apple> apples, AppleFilter filter) {
List<Apple> filterApples = new ArrayList<>();
for (final Apple apple : apples) {
if (filter.accept(apple)) {
filterApples.add(apple);
}
}
return filterApples;
}
public static void main(String[] args) {
List<Apple> apples = new ArrayList<>();
// 筛选苹果
List<Apple> filterApples = filterApplesByAppleFilter(apples, new AppleFilter() {
@Override
public boolean accept(Apple apple) {
// 筛选重量大于100g的红苹果
return Color.RED.equals(apple.getColor()) && apple.getWeight() > 100;
}
});
}
// 筛选苹果
List<Apple> filterApples = filterApplesByAppleFilter(apples,
(Apple apple) -> Color.RED.equals(apple.getColor()) && apple.getWeight() >= 100);
参考文章
网友评论