24.2 方法引用详解:通过类名引用成员方法与静态方法、super与this引用成员方法、类的构造器引用、数组的构造器引用

目录

1 方法引用

用方法引用改进代码

列:实现方法引用

方法引用:通过对象名引用成员方法

方法引用:通过类名称引用静态方法

方法引用:通过super引用成员方法

方法引用:通过this引用成员方法

方法引用:类的构造器引用

方法引用:数组的构造器引用


1 方法引用

用方法引用改进代码

双冒号 :: 写法,这被称为“方法引用”,而双冒号是一种新的语法

双冒号 :: 为引用运算符,而它所在的表达式被称为法引用如果Lambda要表达的函数方案已经存在于某个方法的实现中,那么则可以通过双冒号来引用该方法作为Lambda的替代者

列:实现方法引用

创建函数是接口

@FunctionalInterface
public interface Printable {
    public abstract void myPrint(String str);
}
public class Demo01Printable {
    //定义一个方法,参数传递Printable接口,对字符串进行打印
    public static void method(Printable printable) {
        printable.myPrint("hello");
    }

    public static void main(String[] args) {
        //调用printString方法,方法的参数Printable是一个函数式接口,所以可以传递Lambda
        method(str -> System.out.println(str));

        /*
            分析:
                Lambda表达式的目的,打印参数传递的字符串
                把参数s,传递给了System.out对象,调用out对象中的方法println对字符串进行了输出
                注意:
                    1.System.out对象是已经存在的
                    2.println方法也是已经存在的
                所以我们可以使用方法引用来优化Lambda表达式
                可以使用System.out方法直接引用(调用)println方法
         */
        method(System.out::println);
    }
}

方法引用:通过对象名引用成员方法

这是最常见的一种用法,与上例相同。如果一个类中已经存在了一个成员方法

public interface AInterface {
    void aInterfaceMethod(String str);
}
public class A {
    public void methodA(String str){
        System.out.println(str);
    }
}
public class B {
    // 接口作为方法的参数
    public static void method(AInterface aInterface){
        aInterface.aInterfaceMethod(&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值