首页 > 编程语言 >Java8新特性之lambda表达式

Java8新特性之lambda表达式

时间:2022-11-17 19:56:02浏览次数:43  
标签:myFunctionInterface show 接口 public MyFunctionInterface Java8 表达式 lambda

1.1 Java8的概述

  • Java8于2014年3月发布,该版本是 Java 语言的一个重要版本,自Java5以来最具革命性的版本,该版本包含语言、编译器、库、工具和JVM等方面的多个新特性。

1.2 函数式接口

  • 函数式接口主要指只包含一个抽象方法的接口,如:java.lang.Runnable等。
@FunctionalInterface
public interface Runnable {
    /**
     * When an object implementing interface {@code Runnable} is used
     * to create a thread, starting the thread causes the object's
     * {@code run} method to be called in that separately executing
     * thread.
     * <p>
     * The general contract of the method {@code run} is that it may
     * take any action whatsoever.
     *
     * @see     java.lang.Thread#run()
     */
    public abstract void run();
}
  • Java8中提供@FunctionalInterface注解来定义函数式接口,若定义的接口不符合函数式的规范便会报错。
/**
 * 自定义函数式接口
 */
@FunctionalInterface
public interface MyFunctionInterface {
    /**
     * 自定义有且只有一个的抽象方法
     */
    void show();
}
  • Java8中增加了java.util.function包,该包包含了常用的函数式接口,具体如下:
接口名称 方法声明 功能介绍
Consumer void accept(T t) 根据指定的参数执行操作
Supplier T get() 得到一个返回值
Function<T,R> R apply(T t) 根据指定的参数执行操作并返回
Predicate boolean test(T t) 判断指定的参数是否满足条件

1.3 函数式接口的使用方式

1.3.1 自定义类实现函数式接口得到接口类型的引用

/**
 * 自定义类实现接口
 */
public class MyFunctionInterfaceImpl implements MyFunctionInterface {
    @Override
    public void show() {
        System.out.println("这里是接口的实现类");
    }
}

MyFunctionInterface myFunctionInterface = new MyFunctionInterfaceImpl();
myFunctionInterface.show();

1.3.2 使用匿名内部类的方式得到接口类型的引用

MyFunctionInterface myFunctionInterface = new MyFunctionInterface() {
    @Override
    public void show() {
        System.out.println("匿名内部类的方式");
    }
};
myFunctionInterface.show();

1.3.3 使用Lambda表达式得到接口类型的引用

  • Lambda 表达式是实例化函数式接口的新方式,允许将函数当做参数进行传递,从而使代码变的更加简洁和紧凑。
  • 语法格式:(参数列表) -> { 方法体; }
  • 其中()、参数类型、{} 以及return关键字 可以省略。
MyFunctionInterface myFunctionInterface = () -> {
    System.out.println("lambda表达式的方式");
};
myFunctionInterface.show();

// 省略{}后的写法
MyFunctionInterface myFunctionInterface = () -> System.out.println("lambda表达式的方式");
myFunctionInterface.show();

更多精彩欢迎关注微信公众号《格子衫007》!

标签:myFunctionInterface,show,接口,public,MyFunctionInterface,Java8,表达式,lambda
From: https://www.cnblogs.com/gezishan007/p/16896668.html

相关文章

  • 正则表达式基本语法的详解
    正则表达式基本语法的详解本文给给大家介绍正则表达式的基本语法,需要的朋友可以参考下 正则表达式是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为“......
  • 正则表达式中的预搜索
    格式:1.正向预搜索,右侧是或者不是什么:"(?=xxxxx)","(?!xxxxx)";2.反向预搜索,左侧是或者不是什么:"(?<=xxxxx)","(?<!xxxxx)"注意:1.括号是必须的且不参与反向引......
  • 18.正则表达式
    search方法输出的是a开始的位置6replace方法正则表达式是单独的技术,每个语言都有不同......
  • Java8 新特性
    Java8新特性 Java8新特性之Lambda和Stream(一)Lambda#1.what?#Lambda是java8的一个新特性,可以大幅度减少代码量;关注于"做什么",而不是"怎么做",可以通过匿名......
  • (二)递归 4132 四则运算表达式求值
    四则运算表达式求值​​AC代码​​​​解析​​​​坑​​​​新知识​​​​cout格式​​​​true代表1,false代表0​​​​输入流操作​​​​ASCII​​AC代码/***********......
  • cron表达式
    这种表达式称为cron表达式,通过cron表达式可以灵活的定义出符合要求的程序执行的时间。本小节我们就来学习一下cron表达式的使用方法。如下图:cron表达式分为七个域,之间使......
  • Spring 中定时任务cron表达式问题
    1.问题:Cronexpressionmustconsistof6fields(found7in“0/5****?*“)@Scheduled(cron="0/5****?*")2.原因:年的项1099~2099年,为默认。因此只需要......
  • c++匿名表达式
    C++11Lambda表达式 C++11中的匿名函数(lambda函数,lambda表达式)https://gitlab.com/yzzy/modern-cpp/-/blob/main/c16_lambda/main.cpp[](intx,inty){return......
  • [Python]学习笔记之-正则表达式
           在使用Python做文件处理时,经常需要使用到匹配、搜索功能,这就离不开一个核心的知识:正则表达式。正则表达式(RegularExpression)描述一种字符串匹配的模式(pat......
  • Lambda里时间排序,日期最大、最小值
    Java中通过Lambda进行时间排序,获取日期最大最小值的方法一、使用Lambda根据对象中的时间进行排序//从小到大->升序排列List<HistoryInfo>historyInfoList=history......