前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Java-SE-第三十五章》之方法引用

《Java-SE-第三十五章》之方法引用

作者头像
用户10517932
发布2023-10-07 14:52:28
950
发布2023-10-07 14:52:28
举报
文章被收录于专栏:929KC929KC

前言

在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!”

博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

方法引用

Java8引入了方法引用,其使用场景是,当我们使用lambda时,如果方法体中只有一个方法调用(包括构造方法),我们可以使用方法引用进一步简化代码。Java8中提供了四种不同类型的方法引用:静态方法引用,实例方法引用,构造方法引用。下面我们就来介绍这些方法引用。

1. 静态方法引用

基本格式:类名::方法名

使用前提

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

示例代码

代码语言:javascript
复制
public class Demo8 {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(new User("张三", "2222"), new User("李四", "3333")
                , new User("王五", "4444"));
        List<Integer> collect = users.stream().map(user -> user.getPassword()).map(Integer::valueOf).collect(Collectors.toList());
        System.out.println(collect);
    }
}

2. 引用对象的实例方法

基本格式:对象名::方法名

使用前提

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

示例代码

代码语言:javascript
复制
public class Demo8 {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(new User("张三", "2222"), new User("李四", "3333")
                , new User("王五", "4444"));
        StringBuilder sb= new StringBuilder();//创建对象
      users.stream().map(user->user.getUsername())
              .forEach(sb::append);//使用方法
    }
}

3. 引用类的实例方法

基本格式:类名::方法名

使用前提

​ 如果我们在重写方法的时候,方法体中只有一行代码,并且这行代码是调用了第一个参数的成员方法,并且我们把要重写的抽象方法中剩余的所有的参数都按照顺序传入了这个成员方法中,这个时候我们就可以引用类的实例方法。

示例代码

代码语言:javascript
复制
public class Demo9 {
    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("bbbb", String::substring);

    }

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

4. 构造器引用

​ 如果方法体中的一行代码是构造器的话就可以使用构造器引用。

基本格式:类名::new

使用前提

​ 如果我们在重写方法的时候,方法体中只有一行代码,并且这行代码是调用了某个类的构造方法,并且我们把要重写的抽象方法中的所有的参数都按照顺序传入了这个构造方法中,这个时候我们就可以引用构造器。

示例代码

代码语言:javascript
复制
public class Demo8 {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(new User("张三", "2222"), new User("李四", "3333")
                , new User("王五", "4444"));
      users.stream().map(User::getUsername).map(StringBuilder::new)
              .map(sb->sb.append("cdd").toString()).forEach(System.out::println);
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法引用
    • 1. 静态方法引用
      • 2. 引用对象的实例方法
        • 3. 引用类的实例方法
          • 4. 构造器引用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档