java8专区--- 第1集(函数式接口)

1 定义


Lambda表达式(也称为闭包)是Java 8中最大和最令人期待的语言改变。它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理:函数式开发者非常熟悉这些概念。

很多JVM平台上的语言(Groovy、Scala等)从诞生之日就支持Lambda表达式,但是Java开发者没有选择,只能使用匿名内部类代替Lambda表达式。

Lambda的设计耗费了很多时间和很大的社区力量,最终找到一种折中的实现方案,可以实现简洁而紧凑的语言结构。

最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成,例如:

Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );

1 Lambda表达式代替的是什么?------- 函数(动作)

2 什么叫做函数式接口

  1. 可以用@FunctionalInterface修饰的接口且不报错。
    
  2. 必须是一个接口
  3. 必须有且只有一个抽象方法
  4. 接口中的抽象方法不能是继承的,否则不能当作函数式接口的唯一抽象方法
  5. 函数式接口不一定要添加@FunctionalInterface注解

3 函数式接口的用途

1 Function

public class Main {
    public static void main(String[] args) {
        test01();
    }

    public static void test01() {
        List<String> list = Lists.newArrayList();
        list.add("1");
        list.add("2");
        list.forEach(o -> {
            System.out.println(o);
        });
    }

    public static void test02() {
        myFunction(o1 -> String.valueOf(o1));//传入什么参数,就返回什么

        myFunction((Integer o1) -> String.valueOf(o1));//传入什么参数,就返回什么
        myFunction(o1 -> {
            // 业务代码
            return  String.valueOf(o1);
        });
        myFunction(o1 -> null);
        myFunction(o1 -> {
            return null;
        });
    }
    public static void myFunction(Function<Integer,String> function) {

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_39405857/article/details/89577068