前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDK8系列之Method References教程和示例

JDK8系列之Method References教程和示例

作者头像
SmileNicky
发布2021-07-16 11:13:34
2800
发布2021-07-16 11:13:34
举报
文章被收录于专栏:Nicky's blogNicky's blog

JDK8系列之方法引用教程和示例

在上一章的学习中,我们学习了JDK8的lambada表达式,接着,本章节继续学习jdk8的方法引用

1、什么是jdk8方法引用

方法引用,英文Method References,jdk8中的方法引用通过方法的名字来指向一个方法,语法是使用一对冒号 ::,方法引用可以使语言的构造更紧凑简洁,减少冗余代码

2、方法引用的分类

方法引用的使用有如下几种:

  • 类的静态方法引用,类名::静态方法名 语法:ClassName :: staticMethodName
  • 特定对象的实例方法引用,对象::实例方法名 语法:object :: instanceMethodName
  • 类的任意对象的实例方法引用,类名::实例方法名 语法:ClassName :: instanceMethodName
  • 构造器引用,类名::new(构造方法的引用) 语法:ClassName :: new

3、类的静态方法引用

代码语言:javascript
复制
import java.util.function.BiFunction;
public class MethodReferenceExample {
    public MethodReferenceExample() {
    }
    public static void main(String[] args) {
        // example 1:引用类的静态方法
        BiFunction<Integer , Integer , Integer> add = MethodReferenceExample::add;
        int pr1 = add.apply(5 , 20);
        System.out.println(String.format("两个数相加的和:%s" , pr1));
    }
    public static int add(int a , int b) {
        return a + b;
    }
}

4、类的任意对象的实例方法引用

代码语言:javascript
复制
import java.util.Arrays;
public class MethodReferenceExample {
    public MethodReferenceExample() {
    }
    public static void main(String[] args) {
        // example 2:引用类的实例方法
        String[] strs = {"Apple", "Banana" , "Apricot","Cumquat", "Grape", "Lemon","Loquat","Mango"};
        Arrays.sort(strs , String::compareToIgnoreCase);
        Arrays.asList(strs).forEach(str -> {System.out.println(String.format("水果名称:%s", str));});
    }
}

5、特定对象的实例方法引用

代码语言:javascript
复制
public class MethodReferenceExample {

    public MethodReferenceExample() {
    }
    public static void main(String[] args) {
        // example 3:引用对象的实例方法
        MethodReferenceExample example = new MethodReferenceExample();
        MyFunctionalInterface functionalInterface = example::echo;
        functionalInterface.display();
    }
    public void echo() {
        System.out.println("hello world");
    }
}

@FunctionalInterface
interface MyFunctionalInterface{
    void display();
}

6、对构造函数的方法引用

代码语言:javascript
复制
public class MethodReferenceExample {
    public MethodReferenceExample() {
    }
    public MethodReferenceExample(String msg) {
        System.out.println(String.format("参数打印:%s" , msg));
    }

    public static void main(String[] args) {
        // example 4:构造方法的引用
        MyInterface myInterface = MethodReferenceExample::new;
        myInterface.display("Method reference to a constructor");
    }
}
@FunctionalInterface
interface MyInterface{
    void display(String msg);
}

附录:参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JDK8系列之方法引用教程和示例
    • 1、什么是jdk8方法引用
      • 2、方法引用的分类
        • 3、类的静态方法引用
          • 4、类的任意对象的实例方法引用
            • 5、特定对象的实例方法引用
              • 6、对构造函数的方法引用
                • 附录:参考资料
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档