栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java函数式编程(6) -方法引用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java函数式编程(6) -方法引用

Java函数式编程(6) - 方法引用 1. 概述

概念: 方法引用简单粗暴就是一句话,用来简化Lambda表达式的! 是一种语法糖
基本格式: 方法体只有一行代码,并且只是某个方法的调用
使用场景: 如果你要使用lambda函数,而且有现成的方法可以实现lambda表达式要做的功能,那么就可以使用方法引用了,比如要实现比较两个数大小的功能,comparator是一个函数式接口,我们可以选择使用lambda表达式;而Integer的compare方法已经实现了一样的功能(传给它两个数,它会比较这两个数的大小),这时候就可以选择方法引用,直接用Integer::compare代替整个lambda表达式。

2. 举例

以前的冗余代码场景:

 public static void main(String[] args) {
        print(s -> System.out.println(s));
    }
    public static void  print(Print print){
       print.print("小喵");
    }

方法引用优化后:

public static void main(String[] args) {
        print(System.out::println);
    }
    public static void  print(Print print){
       print.print("小喵");
    }

这样可以减少代码冗余,在Lambda中有地方存在相同的方案的话,没必要再重复写此逻辑了

3.格式

类或对象名 :: 方法名

4.语法详解 4.1 通过类名引用静态成员方法

类名:: 方法名

使用前提: 如果我们在重写方法的时候,方法体中只有一行代码,并且这行代码是调用了某个类的静态方法,并且我们把要重写的抽象方法的参数按照顺序传入了这个静态方法中,这个时候我们就可与引用类的静态方法:

4.2 引用对象的实例方法

对象名::方法名

使用前提: 如果我们在重写方法的时候,方法体中只有一行代码,并且这行代码是调用了某个对象的成员方法,并且我们把要重写的抽象方法的参数按照顺序传入了这个静态方法中,这个时候我们就可与引用对象的实例方法:

4.3 引用类的实例方法

类名::方法名

使用前提: 如果我们在重写方法的时候,方法体中只有一行代码,并且这行代码是调用了第一个参数的成员方法,并且我们把要重写的抽象方法的参数按照顺序传入了这个静态方法中,这个时候我们就可与引用类的实例方法:

4.4 构造器引用

类名:: new

5.总结

方法引用的使用只做了解就可以,本来这就是一个语法糖并没有啥实际的作用,如果使用这个还要记忆那么多的规则个人觉的没啥用,平时在做开发的时候,我们可以借助idea来做,如果可以转化为方法引用的话,可以使用idea一件转换:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991889.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号