栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 函数式接口和Lamdba表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 函数式接口和Lamdba表达式

java内的函数式接口是指只定义一个抽象方法的接口

如下

也可以自己定义一个函数式接口

其中这个注解

@FunctionalInterface

是用来检查该接口是否是一个函数式接口

函数式接口可以用于方法的参数,方法的返回值。并且支持Lamdba表达式对函数式接口内的抽象方法进行重写,所以可以使代码更加简洁和灵活。

例如用Comparator接口定义自己的排序方法,此时函数式接口是作为返回值的

import java.util.Arrays;
import java.util.Comparator;

public class Demo02 {
    public static Comparator getComparable() {
        
        //Lambda
        return (o1, o2) -> o2.length() - o1.length();

    }

    public static void main(String[] args) {
        String[] arr = {"111","aaa","123","abcasdasd"};
        //排序前的数组
        System.out.println(Arrays.toString(arr));
        Arrays.sort(arr,getComparable());
        System.out.println(Arrays.toString(arr));
    }
}

可以看出用Lamdba表达式减少了代码的行数,更加的简洁。

当函数式接口作为方法的参数时

@FunctionalInterface
public interface MessageBuilder {
    public abstract String Build();
}
public class Demo01 {
    public static void showLog(int level,MessageBuilder mb) {
        if(level == 1) {
            System.out.println(mb.Build());
        }
    }

    public static void main(String[] args) {
        String s1 = "123";
        String s2 = "Java";
        String s3 = "yyds";
        //Lambda
        showLog(1,() -> {
            return s1+s2+s3;
        });
    }
}

这是一个简单的实现三个字符串相连并输出的方法,使用Lamdba表达式使代码更加简洁好看

以上是我在学习过程中做的一些笔记,有哪里错了可以说出来和我一起共同学习一下哈

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/865302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号