《Java-SE-第三十五章》之方法引用
  xHeB8D0kJM9D 2023年11月02日 51 0


前言

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

博客主页:KC老衲爱尼姑的博客主页

博主的github,平常所写代码皆在于此

共勉:talk is cheap, show me the code

作者是爪哇岛的新手,水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!



文章目录

  • 方法引用
  • 1. 静态方法引用
  • 2. 引用对象的实例方法
  • 3. 引用类的实例方法
  • 4. 构造器引用



方法引用

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

1. 静态方法引用

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

使用前提

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

示例代码

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. 引用对象的实例方法

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

使用前提

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

示例代码

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. 引用类的实例方法

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

使用前提

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

示例代码

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

使用前提

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

示例代码

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);
    }
}

各位看官如果觉得文章写得不错,点赞评论关注走一波!谢谢啦!。

《Java-SE-第三十五章》之方法引用_开发语言


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   54   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   109   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
xHeB8D0kJM9D