编程人 cdmana.com

4.3Java8新特性【lambda表达式,函数式接口,方法引用与构造器引用 】

lambda表达式,函数式接口,方法引用与构造器引用

1.lambda表达式的基本使用(依赖于函数式接口)

函数式接口:只有一个抽象方法的接口

1)举例  (o1,o2) -> Interger.compare(o1,o2)

2)格式: 

 ->:lambda操作符 或箭头操作符

->左边:lambda形参列表(其实就是函数式接口中抽象方法的形参列表)

->右边:lambda体(其实就是重写的抽象方法的方法体)

3)编写格式的总结:

->左边:参数类型由于参数推断可以省略,当形参列表只有一个参数的时候 ()可以省略,有多个参数或者没有参数的时候不可以省略

->右边:一般是被{}包裹,如果lambda体内只有一条语句的时候,{}可以省略,return关键字也可以省略

 

2.函数式接口

1)函数式接口就是只有一个抽象方法的接口,我们可以使用lambda表达式来创建函数式接口的实例

public class lambdaTest01 {
    public static void main(String[] args) {
        //正常创建函数式接口的实例对象
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                System.out.println("我是runnable接口的匿名实例对象");
            }
        };

        //使用lambda表达式创建的函数式接口的实例对象
        Runnable runnable1 = () -> {
                System.out.println("我是使用lambda表达式创建的匿名实例对象");
        };

        runnable.run();
        runnable1.run();
    }
}

2)自定义函数式接口

我们可以使用@FunctionalInterface来检查该接口是不是函数式接口

@FunctionalInterface
public interface funInterface {
    void talk();
}

3)内置四大核心函数式接口

消费型:Consumer<T>    void accept(T t)

供给型:Supplier<T>        T ge()

函数型:Function<T,R>     R apply(T t)

断定型:Pridicate<T>         boolean test(T t)

 方法引用与构造器引用

Scroll to Top