lamdba表示式快速入门

Lambda 表达式是 Java8 的新特性。
利用这个特性,可以使我们创建匿名内部类的对象时,代码简洁。
而且写出更加简洁美观的代码是当今的潮流。
新特性的加入能火起来,原因无非是有好处,比如比以前更加简单实用。

函数式接口

在 java8 中接口可以定义默认方法,而函数式接口规定该接口只能有一个抽象方法,比如:

@FunctionalInterface
interface  Foo{

    /*
    函数式接口只能有一个方法!只有函数式接口才能用lambda表达式
    一个接口只有一个方法,隐式(自动加)@FunctionalInterface
    public void sayHello();*/
    public int add(int x, int y);

    //java8可以在接口内定义默认方法,且不影响函数式接口
    public default int mul(int x, int y){
        return x * y;
    }
}

其中@FunctionalInterface注解可加可不加,Java8 默认会为只有一个抽象方法的接口加上该注解。

创建匿名内部类的对象

传统方法:

Foo foo = new Foo() {
            @Override
            public void add(int x, int y) {
           		System.out.println("come in add method");
            	return x + y;
            }
        };

使用 lambda 表达式:

Foo foo = (int x, int y) -> {
            System.out.println("come in add method");
            return x + y;
        };

可以看到使用 lambda 表达式时,由于只有一个方法,所以不用关心方法名,只需要关关心方法的传入参数、业务逻辑和回返回值,就可以快速创建该对象。
如果记不住怎么用,可以记口诀:
复制圆括号,写箭头,花括号里写逻辑

最常用的地方是创建线程。Runnable接口只有一个方法,所以使用

Thread t1 = new Thread(() -> {
	//业务逻辑
},threadName).start();

可以快速创建一个处于runnable状态的线程。

你可能感兴趣的:(Java基础)