【Java笔记】方法引用

什么是方法引用?

方法引用就是将复杂抽象函数的方法体简化。

上述匿名内部类可以利用方法引用简化成:

表示引用FunctionDemo1中的subtraction方法

方法引用的分类:

引用静态方法

现在这里有一个列表,里面存着一些字符串,要求将他们转换成Int类型。

常规方法:

常规方法就是调用map()方法,重写他的方法,方法体里写转换的代码,并将转换后的结果返回。

方法引用:

直接调用Interger类中中paseInt方法即可,这是Java本身存在的方法,或者我们自己写个静态方法,通过  “对象::静态方法”也可以实现。

引用成员方法

其他类

这里我们自定义了一个类,叫StringOperation,里面写了一个stringJudge方法。括号里通过new 一个新的对象来使用他的方法。或者创建对象写在外面也可以。如下:

本类

如上我们将stringJudge方法定义在同一个类中,括号里直接 this::方法名即可。但是要注意的是引用处不能是静态方法(这里的是在测试类中引用,测试类用static修饰了,所以报错)

父类

引用父类中的成员方法,引用处同样不能是静态方法

引用构造方法

现在我们有一个列表,要求将列表中的数据都封装成Student的对象

常规写法:

通过arr数组来存储姓名,name来获取姓名,通过变量age来获取年龄,在new一个student对象分别把姓名和年龄传过去。

我们可以把匿名内部类的方法体写在Student的其中一个构造方法里,注意这个构造方法的参数和返回值都要和抽象方法一致。不需要返回值。

然后我们回到测试类中,使用Student::new方法即可。

其他调用方法

使用类名去引用成员方法

要求将列表中的字符串里的字母改成大写,代码如下:

这里我们引用的是Java本身就有的方法,可以看到左边抽象方法中的参数是String s,但toUpperCase方法本身是没有参数的,我们要求引用的方法和抽象函数中的参数要一致,那这里为什么可以成功引用呢?

下面补充:

抽象方法中第一个参数表示可以引用哪些类中的方法,如上面只能引用String类中的方法。

第二个参数:如果没有,则说明被引用的方法本事就是无参的;

                     否则,从第二个参数起,每一个参数都要和引用方法的形参一致。

所以,与之前 “对象::成员方法” 不同,这种形式可以引用所有类中任何一个方法。只要你new他的对象。

而 “类名::成员方法”  只能引用第一个参数的类型的这个类中的方法,如上面只能引用String类中的方法。

引用数组的构造方法

其实就是创建了一个新的数组,并且把list中的数据放进数组里。

总结

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值