专栏首页JacobJDK 8 新特性 之 Lambda表达式

JDK 8 新特性 之 Lambda表达式

前言


  • Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
  • Lambda 允许把函数作为参数传递进方法中。
  • 使用 Lambda 表达式可以使代码变的更加简洁紧凑。
  • lambda表达式的重要特征:
    1. 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
    2. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
    3. 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
    4. 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

JDK8 之前调用接口的方式是通过匿名内部类,调用接口中的方法。
@FunctionalInterface
public interface FunctionInterface {
    void get();
}

public class FunctionTest {
    public static void main(String[] args) {
        FunctionInterface functionInterface = new FunctionInterface() {
            @Override
            public void get() {
                System.out.println("get方法");
            }
        };
        functionInterface.get();
    }
}
使用Lambda表达式调用接口中的方法
@FunctionalInterface
public interface FunctionInterface {
    void get();
}

public class FunctionTest {
    public static void main(String[] args) {
        FunctionInterface ft = () -> {
            System.out.println("JDK8 Lambda表达式调用:get方法");
        };
        ft.get();
    }
}

() : 表示抽象方法所需的参数列表,(参数1,参数2) -> : 固定格式 {} :表示抽象方法的方法体

有返回值的Lambda表达式调用方法
@FunctionalInterface
public interface FunctionInterface2 {
    String get();
}
public class FunctionTest {
    public static void main(String[] args) {
        FunctionInterface2 functionInterface2 = () -> {
            return "有返回值的Lambda表达式调用方法";
        };
        System.out.println(functionInterface2.get());

        /**
         * 优化:有返回值的Lambda表达式调用方法
         */
        FunctionInterface2 functionInterface3 = () -> "优化:有返回值的Lambda表达式调用方法";
        System.out.println(functionInterface3.get());
    }
}
有参数,有返回值的Lambda表达式调用方法
@FunctionalInterface
public interface FunctionInterface3 {
    String get(String s);
}
public class FunctionTest {
    public static void main(String[] args) {
        FunctionInterface3 ft3 = (String s)-> s;
        System.out.println(ft3.get("有参数,有返回值的Lambda表达式调用方法"));
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JDK 8 新特性 之 Strams简单使用

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观...

    Jacob丶
  • 设计模式 之 抽象工厂模式

    工厂模式中讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍...

    Jacob丶
  • 使用 Spring Cloud 实现微服务系统

    准备工作: 为了方便创建项目,以及各版本以来关系,此次创建项目使用 Spring Assistant插件。

    Jacob丶
  • 不了解这 12 个语法糖,别说你会 Java!

    本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,...

    Java技术江湖
  • 在Java中12个常见的语法糖!

    本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,...

    Java3y
  • java设计模式(2) 建造者模式,深复制与浅复制

    建造者模式 就是建造不同的东西,但是基本流程不变,将复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 //构建产品 public ...

    曼路
  • java浅拷贝和深拷贝(基础也是很重要的)

    对于的github基础代码https://github.com/chywx/JavaSE

    陈灬大灬海
  • JDK1.9-Lambda表达式

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    cwl_java
  • 不懂这12个语法糖,别说你会Java!

    本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,...

    Java技术江湖
  • 第三阶段-Java常见对象:【第七章 正则表达式】

    BWH_Steven

扫码关注云+社区

领取腾讯云代金券