首页 > 编程语言 >java中的方法引用

java中的方法引用

时间:2023-12-26 20:56:22浏览次数:37  
标签:java String int start length 引用 str 方法

方法引用是对lambda的进一步简化,如果方法体只有一个方法调用的话,可以直接采用对象名(类名)::方法名的格式(想起来了C++的一些语法)

一个例子:上面是lambda的一种写法,下面是方法引用的改进

int[] arr = {-1, 2, 3, 4, 5, 6};
Arrays.stream(arr).forEach(a-> System.out.println(a));
Arrays.stream(arr).forEach(System.out::println);

引用类的静态方法/对象的实例方法的使用前提:重写的方法中,方法体只有一行代码,并且这行代码是调用了某个类的静态方法/某个对象的成员方法,抽象方法中的所有参数已经按照顺序传入了这个静态方法中。

引用类的实例的方法的使用前提:重写的方法中,方法体只有一行代码,这行代码是调用了第一个参数的成员方法,抽象方法中的所有参数已经按照顺序传入了这个静态方法中有些难懂,附上一个例子

 interface UseString {
        String use(String str, int start, int length);
    }

    public static String subAuthorName(String str, UseString useString) {
        int start = 0;
        int length = 1;
        return useString.use(str, start, length);
    }

    public static void main(String[] args) {
        subAuthorName("天启A", new UseString() {
            @Override
            public String use(String str, int start, int length) {
                return str.substring(start,length);
            }
        });
     }
上述main中的方法只要替换成subAuthorName("天启A", String::substring);即可

构造器引用的使用前提:重写的方法中,方法体只有一行代码,这行代码是调用了某个类的构造方法,抽象方法中的所有参数已经按照顺序传入了这个构造方法中
//注意 上一个stream是string类型
name->new StringBuilder(name)

StringBuilder::new

 

 

标签:java,String,int,start,length,引用,str,方法
From: https://www.cnblogs.com/kun1790051360/p/17929331.html

相关文章

  • JAVA 设计模式(一) - 单例模式
    JAVA设计模式(一)-单例模式本篇文章主要讲下android创建型设计模式中的单例模式.单例模式保证一个类只有一个实例,并提供一个访问该实例的全局节点.它的实现有多种实现方式:1:饿汉式饿汉式:类加载时就创建实例.不支持延迟加载实例publicclassSingleton{priva......
  • JAVA设计模式(三)-原型
    JAVA设计模式(三)-原型本篇文章主要讲下java创建型设计模式中的原型模式.何谓原型模式:简单来说就是将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。使用原型模式,就可以简化实例化的过程,不必依赖于构造函数或者new关键字.由于java提供了clone方法......
  • JAVA设计模式(二)-简单工厂
    JAVA设计模式(二)-简单工厂本篇文章主要讲下java创建型设计模式中的简单工厂模式.简单工厂模式又叫静态工厂方法模式(StaticFactoryMethodPattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。1:定义接口publicinterfacePeople{v......
  • 无涯教程-Java9 - 私有接口方法
    在Java8之前,接口可以具有以下类型的变量/方法。Constantvariables(常量)Abstractmethods  (抽象方法)因此,无涯教程不能在接口中实现方法实现,或更确切地说,不能在Java8之前拥有默认实现。请参见示例。publicclassTester{publicstaticvoidmain(String[]args)......
  • 无涯教程-Java9 - Process API增强
    在Java9ProcessAPI中,负责控制和管理操作系统进程的API已得到很大改进。ProcessHandle类提供了检查进程活动性和销毁进程的方法。它具有onExit方法,CompletableFuture类可以在进程退出时异步执行操作。importjava.time.ZoneId;importjava.util.stream.Stream;importjava.......
  • openjdk源码-java是如何执行shell命令的
    一般我们在java中调用shell脚本的方式如下publicintexecuteLinuxCmd(Stringcmd){LOGGER.info("cmd:{}",cmd);Runtimerun=Runtime.getRuntime();try{Processprocess=run.exec(cmd);InputStreamin=proce......
  • 杨辉三角的问题,借助二维数组的方法来解决。
    1publicclasscode1{2publicstaticvoidmain(String[]args){3int[][]x=newint[6][6];4for(inti=0;i<x.length;i++){5x[i][0]=1;6x[i][i]=1;78}9for(inti......
  • 排查java代码慢-arthas工具
    1.下载地址,arthas(gitee.io)2.下载的是一个zip包 3.上传到服务器任意位置,解压 4.查看java进程ps-ef|grep进程名称显示结果的进程号是:1098156.cd到arthas根目录,执行命令java-jararthas-boot.jar109815启动成功如下:注意:如果是用systemctl启动的,注意下......
  • 软件测试/测试开发|Python selenium CSS定位方法详解
    简介CSS选择器是一种用于选择HTML元素的模式。它允许我们根据元素的标签名、类名、ID、属性等属性进行选择。CSS选择器的语法简单而灵活,是前端开发中常用的定位元素的方式。selenium中的css定位,实际是通过css选择器来定位到具体元素,css选择器来自于css语法。CSS定位有以下显著......
  • 深入探讨Java反射:解析机制与应用场景
    当谈及Java编程语言的强大功能时,反射(Reflection)是一个不可忽视的特性。反射允许程序在运行时检查和操作其自身的结构,这为开发者提供了一种动态获取信息和执行操作的途径。在本篇博客中,我们将深入探讨Java反射的原理、用法以及一些实际场景中的应用。什么是反射?反射是Java的一种......