Java1.8新特性之方法引用

目录

什么是方法引用

通过对象名引用成员方法

通过类名引用静态成员方法

通过super关键字调用父类的成员方法

通过this关键字来调用本类成员方法

通过类的构造器(构造方法)引用

数组的构造器引用


 

什么是方法引用

 

首先,这个东西是用来简化或者说替代Lambda表达式的。如果Lambda要表达的函数方案已经存在于某个方法实现中,则可以通过双冒号来引用该方法作为Lambda的替代者(因此必须要有函数式接口)

printString(System.out::println)

 

 

通过对象名引用成员方法

 

 使用前提是对象名是已经存在的,成员方法也是已经存在的

@FunctionalInterface
public interface Printable {
    void print(String s);
}
public class MethodRerObject {
    public void printUpperCaseString(String str){
        System.out.println(str.toUpperCase());
    }
}
public class DemoReference {
    public static void printString(Printable p){
        p.print("Hello");
    }

    public static void main(String[] args) {
        printString((s)->{
            MethodRerObject obj = new MethodRerObject();
            printString(obj::printUpperCaseString);
        });
    }
}

 

 

通过类名引用静态成员方法

 

使用前提是类已经存在,并且静态成员方法也已经存在

@FunctionalInterface
public interface Calcable {
    int calsAbs(int number);
}
public class DemoReference {
    public static int method(int number,Calcable c){
        return c.calsAbs(number);
    }

    public static void main(String[] args) {

        int number2 = method(-10,Math::abs);
        System.out.println(number2);
    }
}

 

 

通过super关键字调用父类的成员方法

 

使用前提是super继承关系存在,父类的成员方法sayHello也存在。

method(super::sayHello);

 

 

通过this关键字来调用本类成员方法

 

使用前提是this已经存在,本类的成员方法也存在

marry(this::buyHouse);

 

 

通过类的构造器(构造方法)引用

 

类的构造方法已知,就可以通过类的构造器引用new创建对象

printName("娜扎",Person::new);

 

 

数组的构造器引用

 

已知数组的长度和数组的类型,可以通过引用来创建数组

int[] arr2 = createArray(10,int[]::new);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值