JavaWeb 知识点Java学习笔记程序员

java8 lambda 表达式详解

2017-04-11  本文已影响5145人  EricAlpha

1. 函数式接口

函数式接口是仅含一个抽象方法的接口,但可以指定 Object 定义的任何公有方法。

@FunctionalInterface
public interface IFuntionSum<T extends Number> {
    T sum(List<T> numbers);      // 抽象方法
}
@FunctionalInterface
public interface IFunctionMulti<T extends Number> {
    void multi(List<T> numbers); // 抽象方法
    
    boolean equals(Object obj);  // Object中的方法
}
@FunctionalInterface
public interface IFunctionMulti<T extends Number> extends IFuntionSum<T> {
    void multi(List<T> numbers);
    
    @Override
    boolean equals(Object obj);
}
// IFunctionMulti 接口继承了 IFuntionSum 接口,此时 IFunctionMulti 包含了2个抽象方法

tip 1: 可以用 @FunctionalInterface 标识函数式接口,非强制要求,但有助于编译器及时检查接口是否满足函数式接口定义
tip 2: 在 Java 8 之前,接口的所有方法都是抽象方法,在 Java 8 中新增了接口的默认方法

2. lambda 表达式

3. lambda 表达式规约

4. 方法引用

可以引用已有方法构造 lambda 表达式,这里给一个例子,不做详细解释:

list.forEach(System.out::print)
上一篇 下一篇

猜你喜欢

热点阅读