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中List集合的深入介绍(超级推荐!)

    Java中List集合的深入介绍 1. List集合简介 List是Java集合框架中最基本,且使用频率最高的一种集合。List是有序的集合,元素可以重复,并且可以根据索引位置进行访问、添加、删除等操作。 List 是一个接口,常用的实现类包括 ArrayList, LinkedList, Vector。 2. 操作List集合的常用方法 2.1 添加元素 …

    Java 2023年5月26日
    00
  • JSP实现文件上传功能

    下面就是使用JSP实现文件上传功能的攻略。 1. 前置准备 在进行文件上传的操作时,需要使用到Web容器提供的Servlet API和一些第三方的类库,所以在开始实现前,需要进行一些前置准备。 1.1. 导入第三方类库 上传文件过程中,需要用到Apache的常用文件上传组件commons-fileupload,所以需要下载并导入到项目中。在项目中创建一个名叫…

    Java 2023年6月15日
    00
  • Springboot 使用内置tomcat禁止不安全HTTP的方法

    下面是详细的讲解“Spring Boot使用内置Tomcat禁止不安全HTTP的方法”的攻略: 1. 概述 Spring Boot本身就可以使用内置Tomcat服务器来快速构建Web应用程序。默认情况下,Tomcat服务器可以同时支持HTTP和HTTPS两种协议,但是其中HTTP协议是不安全的。为了保证应用程序的安全性,我们需要禁止使用不安全的HTTP协议,…

    Java 2023年5月20日
    00
  • Spring用AspectJ开发AOP(基于Annotation)

    Sure,下面是针对Spring使用AspectJ开发AOP的完整攻略: 一、背景 在面向对象编程中,我们通常使用继承和接口来实现模块化设计和代码重用,但是有些横切性质的问题(例如日志记录、安全、事务等)往往会分散在不同的模块和方法中,难以实现代码重用,这时候就需要AOP(Aspect Oriented Programming)的帮助。 Spring框架整合…

    Java 2023年5月31日
    00
  • Java中Set与List的关系与区别介绍

    当我们使用Java编程语言时,需要用到一些Java集合框架,其中最常见的莫过于Set和List了。这两个集合框架都有自己的特点和用途,下面我们来详细讲解一下Set与List的关系和区别,并提供一些示例说明。 Set和List的概念简介 Set是一个无序的集合,并且不允许出现重复的元素,它是一个继承于Collection接口的子接口。Set接口有以下实现:Ha…

    Java 2023年6月15日
    00
  • Spring整合多数据源实现动态切换的实例讲解

    Spring整合多数据源实现动态切换的实例讲解 在系统中,经常需要连接多个数据库,例如MySQL、Oracle等。Spring提供了很好的支持来整合多数据源,下面就来具体讲解如何实现。 基本配置 首先,需要在pom文件中添加Springjdbc依赖。在applicationContext.xml文件中配置数据源和JdbcTemplate。具体配置如下: &l…

    Java 2023年5月20日
    00
  • Javassist用法详解

    Javassist用法详解 Javassist是一个Java字节码操作库,它可以在运行时修改字节码从而对Java类进行动态编辑和代码生成。Javassist可以用于许多Java开发工具,例如实现AOP(面向切面编程)框架,实现ORM(对象关系映射)框架,实现动态代理等。 基本用法 在使用Javassist之前,我们需要在项目中引入Javassist的依赖: …

    Java 2023年5月26日
    00
  • Java的Struts框架报错“ActionMappingNotFoundException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“ActionMappingNotFoundException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置Action映射,则可能会出现此。在这种情况下,需要检查配置文件以解决此问题。 编码错误:如果代码中没有正确设置Action映射,则可能会出现此。在这种情况下,需要检查代码以解…

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