加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Lambda表达式介绍

发布时间:2020-12-15 07:46:30 所属栏目:Java 来源:网络整理
导读:JDK1.8 中添加了 Lambda表达式,为 Java 添加了确实的函数式编程特性。 Lambda 表达式的类型是函数。但在 Java 中, Lambda 表达式是对像 ,他们必须依附于一类特别的对象类型——函数式接口。 Lambda 表达式最大的特点是:表示做什么,而非如何做。 函数式

JDK1.8 中添加了 Lambda表达式,为 Java 添加了确实的函数式编程特性。

Lambda 表达式的类型是函数。但在 Java 中,Lambda 表达式是对像,他们必须依附于一类特别的对象类型——函数式接口。

Lambda 表达式最大的特点是:表示做什么,而非如何做。

函数式接口

举个例子:

定义一个接口,并添加 @FunctionalInterface 注解,声明其为一个函数式接口,该接口不接收参数并返回一个 String 类型的结果

@FunctionalInterface
public interface MyInterface {
    String test();
    default String getMe() {
        return "This is me";
    }
}

测试接口,打印 1 到 10?

public class MyTest {
    public String testMyInterface(MyInterface myInterface) {
        return "MyInterface accumulate result is: " + myInterface.test();
    }
    public static void main(String[] args) {
        MyTest myTest = new MyTest();
        String string = myTest.testMyInterface(() -> {
            String str = "";
            for (int i = 1; i < 10; i++) str += i + ",";
            return str;
        });
        System.out.println(string);
    }
}

关于函数式接口的声明有如下几个注意点

  • 一个函数式接口只有精确的一个抽象方法,静态方法与默认方法不计算在内
  • 如果在接口中声明了一个重写 java.lang.Object类 中的公有方法的抽象方法,那么该抽象方法不计入函数式接口的抽象方法中
    • 原因:接口总会直接或间接继承自 java.lang.Object类
  • 函数式接口的实例可以通过 lambda表达式、方法引用,或构造方法引用来创建
  • 当不满足下述条件时,编译器将报错
    • 类型是接口类型,而非注解、枚举或类
    • 被注解的接口需满足上述的函数式接口的要求
  • 如果某个接口只有一个抽象方法,但并没有给该接口声明 FunctionInterface 注解,编译器依旧会将该接口看作是函数式接口
  • 函数式接口的实现类的地址中会带上lambda

java.util.function 包中几个主要的接口

  • Function
    • 接收一个参数,并返回一个结果
    • 获取执行结果的方法:apply
  • Consumer
    • 接收一个参数,不返回结果
    • 调用方法:accept
  • Predicate
    • 接收一个参数,返回一个 boolean 类型的结果
    • 计算结果的方法:test
  • Supplier
    • 不接收任何参数,返回一个结果
    • 可作工厂用
    • 生产方法:get
  • java.util.function 中还提供了上述方法的各种变形
  • 还有,为了提高执行效率,还针对原生类型(int,double,long)提供了相应的接口
    • 对应介绍见:https://www.cnblogs.com/flying-snake/p/11343295.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读