通过lambda简化代码

229 阅读1分钟

定义为匿名类的函数在用于编码时有些笨拙。幸运的是,Java 8引入了lambda。lambda并不会改变定义Function接口的方式,但是它们让实现变得非常简单。

1 类型推断

lambda并不只是简化语法,它还为代码编译提供了类型推断。lambda和编写匿名类的传统方式的最大区别就是,它可以省略等式右边的类型。Java 8关于类型推断的新功能使之成为可能。

这里就是用java8提供的函数式接口java.util.function.Function演示

public interface Function<T, R>{
     R apply(T t);
}

eg:

@Test
public void test1(){
    /**
     * 这里a就会被推断为String类型(apply方法的入参类型就是String),
     * 返回值就会被推断为Integer
     */
    Function<String,Integer> function = (a) -> {
        return a.length();
    };
    System.out.println(function.apply("hello"));
}

2 lambda表达式简化

lambda表达式当满足一些条件的时候还有可以简化:

  1. 如果内部实现只有一行代码可以省略大括弧和return
Function<String,Integer> function = (a) -> a.length();
  1. 如果形参只有一个参数可以省略小括弧
 Function<String,Integer> function = a -> a.length();
  1. 无法总结其特点。。。
Function<String, Integer> function = String::length;