Java8方法引用及构造方法引用原理实例解析

Java8方法引用及构造方法引用原理实例解析

Java 8中引入了方法引用(Method Reference)的语法,可以根据Lambda表达式,快速地指向一个已有方法,从而简化编程。

方法引用使用“::”符号来定位某个方法,并用Lambda表达式将方法和函数式接口绑定在一起,从而由Java编译器自动完成Lambda表达式的类型推断。

方法引用的语法格式为:

方法引用的简写格式:“方法所属的类或对象::方法名”

类静态方法引用:"类名::静态方法名"
对象实例方法引用:"对象实例::实例方法名"

构造方法引用的语法格式为:

构造方法引用的简写格式:“类名::new”

方法引用示例

import java.util.Arrays;
import java.util.List;

public class MethodReferenceDemo {
    public static void main(String[] args) {
        List<String> cities = Arrays.asList("beijing", "shanghai", "shenzhen", "guangzhou");
        cities.sort(String::compareToIgnoreCase);
        cities.forEach(System.out::println);
    }
}

在上面的示例代码中,我们使用了方法引用的语法,将String的compareToIgnoreCase方法和Comparator接口中的compare方法进行了绑定。由于List的sort方法需要传入一个Comparator对象,而这里我们使用了方法引用,相当于传入了一个Comparator对象的实现,完成了字符串的排序。

构造方法引用示例

import java.util.function.Supplier;

public class ConstructorReferenceDemo {
    public static void main(String[] args) {
        Supplier<String> supplier = String::new;
        String helloWorld = supplier.get();
        System.out.println(helloWorld);
    }
}

在上面的示例代码中,我们使用了构造方法引用的语法,将String类的无参构造方法和Supplier接口进行了绑定,并使用get方法创建了一个字符串对象。实际上,这里的代码可以使用Lambda表达式替代,如下所示:

Supplier<String> supplier = () -> new String();

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8方法引用及构造方法引用原理实例解析 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 导入项目出现Java多个工程相互引用异常A cycle was detected in the build path of project的解决办法

    当我们在导入一个Java项目时,可能会遇到工程之间相互引用的异常提示:“A cycle was detected in the build path of project”。这种情况下,我们不能正常构建我们的项目,此时我们需要采取一些解决措施。 以下是完整的解决方案: 原因 这个异常通常发生在多个Java工程之间相互引用的情况下。出现这个异常的原因通常是因为…

    Java 2023年5月27日
    00
  • Angular.js与Bootstrap相结合实现表格分页代码

    让我来为你详细讲解一下“Angular.js与Bootstrap相结合实现表格分页代码”的完整攻略。 1. 简介 在Web开发中,表格是一个非常常见的元素,而表格分页功能是表格中必不可少的一个功能。使用Angular.js与Bootstrap相结合,可以很轻松地实现表格分页功能。 2. 实现步骤 2.1 引入依赖 首先,需要引入Angular.js和Boot…

    Java 2023年6月15日
    00
  • Java的Struts框架简介与环境配置教程

    Java的Struts框架是一个开源的MVC框架,由于其优秀的性能以及易于学习和使用,使得它成为了Java Web开发领域中广受欢迎的框架之一。下面是Struts框架的简介以及环境配置教程的完整攻略。 Struts框架简介 Struts框架是一个基于MVC设计模式的Web应用程序框架。它使用了一个控制器组件来代表用户请求并调用相应的业务逻辑和视图组件。Str…

    Java 2023年5月19日
    00
  • Spring Security实现统一登录与权限控制的示例代码

    下面是Spring Security实现统一登录与权限控制的示例代码攻略。 一、概述 Spring Security是一个强大的安全性框架,它可用于实现统一登录和权限控制。本文主要介绍如何使用Spring Security实现统一登录和权限控制。本文适用于有一定的JavaWeb开发经验的读者。 二、Spring Security配置 要使用Spring Se…

    Java 2023年5月20日
    00
  • Java中char数组(字符数组)与字符串String类型的转换方法

    Java中char数组(字符数组)与字符串String类型的转换方法是常见的操作之一,常见的场景如将字符串转为字符数组或将字符数组转为字符串。下面是具体的转换方法及示例说明。 将字符串转换为char数组 可以调用String类的toCharArray()方法将字符串转为char数组。 示例代码: String str = "hello world&…

    Java 2023年5月26日
    00
  • jmeter的时间戳函数使用

    下面是关于jmeter时间戳函数使用的完整攻略: 1. 理解时间戳函数 在JMeter中,我们可以使用时间戳函数来生成当前时间的UNIX时间戳,以及将UNIX时间戳转换为对应的日期时间格式。时间戳是指自1970年1月1日0点0分0秒(格林威治标准时间)以来经过的秒数。使用时间戳函数可以实现生成唯一的随机数、计算业务日期、模拟系统时间等操作。 2. 时间戳函数…

    Java 2023年5月20日
    00
  • SpringBoot常用数据库开发技术汇总介绍

    下面我来详细讲解一下“SpringBoot常用数据库开发技术汇总介绍”的完整攻略: SpringBoot常用数据库开发技术汇总介绍 1. 数据库选择 Spring Boot 支持与多种数据库进行集成,包括但不限于 MySQL、PostgreSQL、Oracle、DB2、SQL Server、MongoDB 等。我们可以选择适合自己需求的数据库进行开发。 2.…

    Java 2023年5月15日
    00
  • 一篇文章带你入门java泛型

    一篇文章带你入门Java泛型 什么是Java泛型? Java泛型是Java语言的一种特性,它是为了让程序员能够编写更加通用的代码而设计的。 通过使用泛型,程序员可以定义一种或多种类型作为参数或返回值,而不需要指定具体的类型。 对于泛型的用途,最常见的就是集合类型,可以使用泛型来定义集合的类型。 如何使用Java泛型? Java泛型使用一对尖括号“<&g…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部