lambda表达式

简介

简介

参数列表 -> 表达式

参数列表 -> {表达式集合}

// 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 filterApplesByAppleFilter(List apples, AppleFilter filter) {
    List filterApples = new ArrayList<>();
    for (final Apple apple : apples) {
        if (filter.accept(apple)) {
            filterApples.add(apple);
        }
    }
    return filterApples;
}

public static void main(String[] args) {
    List apples = new ArrayList<>();

    // 筛选苹果
    List filterApples = filterApplesByAppleFilter(apples, new AppleFilter() {
        @Override
        public boolean accept(Apple apple) {
            // 筛选重量大于100g的红苹果
            return Color.RED.equals(apple.getColor()) && apple.getWeight() > 100;
        }
    });
}
  • lambda表达式处理
// 筛选苹果
List filterApples = filterApplesByAppleFilter(apples,
        (Apple apple) -> Color.RED.equals(apple.getColor()) && apple.getWeight() >= 100);

参考文章

  • java8新特性

你可能感兴趣的:(lambda表达式)