java8 Lambda表达式整理

Lambda表达式

lambda是将一个函数作为一个参数进行传递。

语法

(parameters) -> expression

(parameters) ->{ statements; }

前面是参数,后面是方法的执行体,只有一行代码可以省略花括号,只有一个参数也可以省略参数的括号。

使用范围

只有一个抽象方法的接口中的方法都可以使用lambda表达式进行编写

java8提供的接口

java8内置提供了4个用于lambda的接口

  • predicate接口

    • 断言接口,接受一个参数返回一个boolean类型的值,用于判断的时候使用,比如compare

    • boolean test(T t);
      
  • consumer接口

    • 消费者接口,接受一个参数不返回值,对参数进行处理,打印之类的操作

    • void accept(T t);
      
  • function<T,R>接口

    • 方法处理接口,接受一个任意类型的参数,返回自定义类型的参数

    • R apply(T t);
      
  • supplier接口

    • 生产者接口,不接受参数,返回任意类型的值

    • T get();
      

方法引用

  • 构造方法的引用:HashMap::new==()->new String()

  • 特定对象的方法引用x::toString==()->x.toString()

    • public void example() {
          String x = "hello";
          function(x::toString);
      }
      
  • 任意对象的实例方法引用

    • String::toString==(s) -> s.toString()
  • 静态方法引用

    • String::valueOf==`(s) -> String.valueOf(s)
posted @ 2018-06-07 12:29  司霖  阅读(167)  评论(0编辑  收藏  举报