我是靠谱客的博主 动人哈密瓜,最近开发中收集的这篇文章主要介绍Lambda表达式的简单使用以及需要注意的地方!!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Lambda表达式的简单使用以及需要注意的地方!!

1格式:
( ) -> { }
(参数…)-> {方法体}
注意:
1.当参数只有一个的时候,小括号可以省略不写
2.当方法体中的代码只有一句的时候,大括号可以省略不写
3.传入的参数,参数类型可以省略不写
4.可选的返回关键字return:如果主体只有一个表达式返回值则可以省略return和{}

2使用
条件:
接口中有且只能有一个抽象方法,默认方法静态方法不受影响
格式:
修饰符 interface 接口名称 {
[public abstract] 返回值类型 方法名称(可选参数信息);
// 其他
}
函数式接口
被@FunctionalInterface 注解标注的为函数式接口
该注解可用于一个接口的定义上,一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。
注意:
即使没有@FunctionalInterface该注解满足有且只有一个抽象方法的接口都称为函数式接口

可传递的匿名函数(行为参数化)
自己的理解:Lambda表达式其实就是匿名内部类对象,表达式右边的部分会传递给方法体,所以也可以把Lambda表达式理解成”方法”

官方的定义:可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型。这个定义还是太模糊的,让我们从以下几个关键词慢慢道来。
匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而做得多!
函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型。
传递——Lambda表达式可以作为参数传递给方法或存储在变量中。
简洁——无需像匿名类那样写很多模板代码。

(1)不带参数
接口:
package com.bigdata.lambda;

@FunctionalInterface
public interface MyFunctionalInterface {
void myMethod();
}

测试类:
package com.bigdata.lambda;

/**

  • @author Administrator

  • @date 2019/2/23 19:37

  • @description
    */
    public class testDemo {
    public static void main(String[] args) {

     //test(new MyFunctionalInterface() {
    //
    //
    @Override
    //
    public void myMethod() {
    //
    System.out.println("匿名内部类输出");
    //
    }
    //});
    //使用Lambda表达式代替上面的匿名内部类
    test(() -> System.out.println("lambda表达式输出"));
    

    }

    public static void test(MyFunctionalInterface my) {
    my.myMethod();
    }
    }

(2)带参数
接口
package com.bigdata.lambda;
/**

  • @author Administrator
  • @date 2019/2/23 19:36
  • @description
    */
    @FunctionalInterface
    public interface testInterface {
    void test(String str);
    }

测试类:
package com.bigdata.lambda;

/**

  • @author Administrator

  • @date 2019/2/23 20:02

  • @description
    */
    public class testDemo0 {
    public static void main(String[] args){
    test(“带参lambda测试”, new testInterface() {
    @Override
    public void test(String str) {
    System.out.println(str);
    }
    });

     //lambda表达式测试
    //test("带参lambda测试" ,(string)->System.out.println("带参lambda测试"));
    

    }
    public static void test(String str,testInterface testInterface){
    testInterface.test(str);
    }
    }

使用解析(自己理解):

内置函数

Consumer
消费型接口 T void 对类型为T的对象操作,
方法:void accept(T t)
Supplier
供给型接口 无 T 返回类型为T的对象,
方法:T get();可用作工厂
Function<T, R>
函数型接口 T R 对类型为T的对象操作,并返回结果是R类型的对象
方法:R apply(T t);
Predicate
断言型接口 T boolean 判断类型为T的对象是否满足条件,返回boolean值
方法boolean test(T t);

最后

以上就是动人哈密瓜为你收集整理的Lambda表达式的简单使用以及需要注意的地方!!的全部内容,希望文章能够帮你解决Lambda表达式的简单使用以及需要注意的地方!!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部