JAVA8之初识Lambda表达式

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表达式编译运行成功.

猜你喜欢

转载自blog.csdn.net/ycxzuoxin/article/details/80943513