要求创建一个线程,线程中输出
hello world
没学Lambda前的画风:
1 |
|
1 |
|
当你学会Lambda表达式之后,画风是这样的:
1 | new Thread(() -> System.out.println("hello world!")).start(); |
是不是有种打开新世界大门的感觉,一起来看下Java8的新特性之一Lambda表达式吧
函数式接口:接口中只有一个抽象方法的接口
这种接口都可以用lambda表达式来实现
从源码中可以看到这四个基础接口都有注解@FunctionalInterface,他们都有一个特点:
有且仅有一个抽象方法
下面通过以前的写法、Java8的lambda写法进行对比学习
消费型接口,接收一个参数,但无返回值
其接口核心源码如下:
1 |
|
写一个小示例:
1 |
|
供给型接口,无参数,但有返回值
其接口核心源码如下:
1 |
|
写一个小示例:
1 | Supplier<Integer> supplier1 = new Supplier<Integer>() { |
函数型接口,接收参数T,返回一个R
其核心源码如下:
1 |
|
新老用法对比例子
1 | Function<Integer, String> function1 = new Function<Integer, String>() { |
断定型接口,接收参数T,判断其是否满足某一约束,返回一个boolean值
核心源码如下:
1 |
|
1 | Predicate<Integer> predicate1 = new Predicate<Integer>() { |
要求创建一个线程,线程中输出
hello world
没学Lambda前的画风:
1 |
|
1 |
|
当你学会Lambda表达式之后,画风是这样的:
1 | new Thread(() -> System.out.println("hello world!")).start(); |
是不是有种打开新世界大门的感觉,一起来看下Java8的新特性之一Lambda表达式吧
函数式接口:接口中只有一个抽象方法的接口
这种接口都可以用lambda表达式来实现
从源码中可以看到这四个基础接口都有注解@FunctionalInterface,他们都有一个特点:
有且仅有一个抽象方法
下面通过以前的写法、Java8的lambda写法进行对比学习
消费型接口,接收一个参数,但无返回值
其接口核心源码如下:
1 |
|
写一个小示例:
1 |
|
供给型接口,无参数,但有返回值
其接口核心源码如下:
1 |
|
写一个小示例:
1 | Supplier<Integer> supplier1 = new Supplier<Integer>() { |
函数型接口,接收参数T,返回一个R
其核心源码如下:
1 |
|
新老用法对比例子
1 | Function<Integer, String> function1 = new Function<Integer, String>() { |
断定型接口,接收参数T,判断其是否满足某一约束,返回一个boolean值
核心源码如下:
1 |
|
1 | Predicate<Integer> predicate1 = new Predicate<Integer>() { |