JAVA8之初识Lambda表达式
一. 初识lambda表达式
lambda表达式是java8的一个重要的新特性,
lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块),他属于函数式编程,准确的说,他是面向过程编程.看起来,他与java格格不入,所以在java中,将lambda表达式封装成了对象,他必须依附于特别的对象类型--函数式接口(Functional Interface),对象类型是该接口的实例.如果要使用java8的新特性,就得先下载安装java8.
lambda表达式的语法:
(parameters) -> expression
(parameters) -> { statements }
二. 初识函数式接口
定义:如果在一个接口中有且只有一个抽象方法(继承的也算在其中),那么这个接口就可以被当做是函数式接口.
例如Runnable接口:
package java.lang;
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
java8新增了@FunctionalInterface注解来表示该接口是一个函数式接口,如果没有该注解,只要满足函数式接口的定义,编译器也会把该接口当做函数式接口处理.函数式接口返回实例的方式有两种种:
1. lambda表达式
2. 方法引用
无论使用哪种方式,都必须要符合抽象方法的方法定义.
三. 简单使用lambda表达式
前面已经看到Runnable是函数式接口,那么我们就用这个接口来测试.下面还是简单粗暴的上代码:
package com.yczuoxin.demo;
public class LambdaTest {
public static void main(String[] args) {
new Thread(() -> System.out.println("java 8 新特性")).start();
System.out.println("主线程");
}
}
测试结果:
可见是重新启了一个线程去输出的下面一句话导致"主线程"先输出.第一个lambda表达式编译运行成功.