java_方法引用

什么是方法引用?

个人简述方法引用:

            方法引用主要是针对已经有的方法来让目前的编程更加简洁

            当我们想要使用一个接口的子类的时候,子类需要重写这个接口中的抽象方法,

            被重写的这个方法参数列表固定,返回值类型固定,只要将相应的代码被重写的方法即可

            因此引入lambda表达式,让我们更加方便简洁的只需要写入方法中的代码即可,其他操作交给jvm来处理,但是lambda表达式需要我们写明参数(和接口中对应方法对应的参数,参数类型可以省略),来方便我们在方法体中对传入参数的使用

            方法引用是lambda表达式的升级版本,针对的是当恰好有一个方法(a代表)的功能,参数,返回值和我们想要重写的方法一样,则可以直接引用a来实现,使得代码更加简洁

            使用方法引用只是重构方法,并不是调用方法,

  1. 什么是方法引用?

当我们要编写一个lambda表达式时,发现已经有了一个(或者自己定义了一个)方法实现了我们在lambda中要实现的功能,

         这时就可以引用这个已写好的方法,来代替我们的lambda表达式

  1. 方法引用的前提

1).基于lambda,必须可以使用lambda的时候才能判断是否可以使用方法引用

2).引用方法做的事情必须是和我们使用lambda做的事情一样

3).引用的方法的形参、返回值必须和接口中的形参和返回值一样(方法引用式不需要写形参和返回值,jvm自动判定)

            被引用方法形参必须等于    、大于接口中方法的形参类型;

            被引用方法的返回值类型等于、小于接口中方法的返回值类型

  1. 代码简写过程:

有名字子类à匿名内部类àlambdaàlambda省略格式à方法引用

二.方法引用格式及示例

         引用成员方法:

                            对象名::成员方法名

                           

         引用静态方法:

                            类名::静态方法名

         构造引用(有参和无参一样,参数jvm判定)

                            类名::new

         数组构造器引用(数组定义必须指定个数,所以在使用方法引用时,个数会通过方法的形参传入)

                            数据类型[]::new

 

图形简介:

 示例代码:

package com.ahd.fangfayinyong;

public class Demo01 {
    public static void main(String[] args) {
        //通过实现三种方法创建线程-----匿名内部类,lambda表达式,方法引用对比来说明
        //匿名内部类
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("创建一个线程");
            }
        }).start();

        //通过使用lambda表达式(lambda完整格式)
        new Thread((()->{
            System.out.println("创建一个线程");
        })).start();

        //通过使用lambda表达式(lambda省略格式)
        new Thread((()-> System.out.println("创建一个线程"))).start();

        //通过使用方法引用来实现上述功能
        new Thread(System.out::println).start();

    }
}

有话想要对你说

猜你喜欢

转载自www.cnblogs.com/aihuadung/p/10783744.html