您好,欢迎来到暴趣科技网。
搜索
您的当前位置:首页Lambda(语法+使用)

Lambda(语法+使用)

来源:暴趣科技网

Lambda语法特性

以上就是Lambda的语法,比较简单。

针对Lambda语法,我们能够替代使用的都是函数式接口,Lambda语法是函数式接口的实现。什么是函数式接口?函数式接口指的是只包含一个方法的接口。接口上使用@FunctionalInterface注解进行声明,可以不声明,但是为了防止后续有其他人员添加方法,最好加上。

下面针对Lambda的使用场景进行描述

一、匿名内部类

语法

(parameters) -> expression
或
(parameters) ->{ statements; }

代码中Runnable的实例,等于右边Lambda语法,相当于该语法实现了一个匿名内部类的对象。因此Lambda可以用来简写匿名内部类,如Runnable、View的事件回调方法等

 new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("The old runable now is using!");
            }
        }).start();

        //可以将Lambda表示为一个接口实现的语法,比较好理解。
        Runnable runnable = () -> System.out.println("The old runable now is using!");
        new Thread(runnable).start();

 二、方法引用

左边可以是类名或者实例名,中间是方法引用符号”::”,右边是相应的方法名

ObjectRef::methodName

1. 静态引用。(将静态方法,引用作为指定接口的实现)

声明一个接口

public interface LambdaF {
    boolean test(int a);
}

指定另外一个类中的静态方法当做接口的具体实现方法。接口和实现类的方法名可以不一样,但是参数和返回值和接口保持一致。

public class LambdaTest {

    public static boolean test1(int a) {
        return a == 0;
    }
    
}

具体使用

     LambdaF iTest = LambdaTest::test1;
        boolean b = iTest.test(1);
        System.out.print(b+"");

2.类方法(将类方法,引用作为指定接口的实现)

声明接口(同上静态方法声明的接口)

public interface LambdaF {
    boolean test(int a);
}

指定一个实现方法

public class LambdaTest {

      public boolean test2(int a){ 
	return a ==1; 
      }
}

具体调用,将LambdaTest中test2方法作为接口的具体实现

        LambdaTest lambdaTest = new LambdaTest();
        LambdaF iTest2 = lambdaTest::test2;
        System.out.println(iTest2.test(1)+"");

三、接口拓展。默认方法实现。

声明一个接口。用default来写几个默认实现方法。

@FunctionalInterface
public interface EventListener {
    void onListener(String str);

    default void listener(String str) {
        System.out.println(str);
    }
    default void listener1(String str) {
        System.out.println(str);
    }

}

具体使用

 EventListener eventListener = str -> {};
        eventListener.listener("test3");
以上就是Lambda的主要用法。后续将会结合java8 Streams来说明集合的新用法。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoquwan.com 版权所有 湘ICP备2024080961号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务