Java learn lambda的方法引用

lambda 的方法引用 实质也是建立在把引用方法的代码段简写成lambda表达式
分为以下几种:

1、引用静态方法
首先得有个静态方法
写成静态方法是因为 main主方法用类名调用时只会调用静态方法
h -> Test.test(h) —— h为变量名具体类型自定义 Test示例类名 引用静态方法test 放入参数h
也可写成 Test::test
依据情况而言 有的时候方法里直接放lambda表达式即可 以上只作为介绍引用静态方法将其核心语句写入静态方法并返回。

2、引用对象方法
建立在对该类进行实例化对象 利用对象调用 h -> Test.test(h) 将Test改为自定义的对象名
Test::test 随之做出更改

3、引用容器中的对象的方法
实质就是以上所介绍的 集合只不过有多个该类的对象(前提使用了泛型)
在操作的时候要细化到每一个对象
因此 在该类就写一个静态方法 之后的操作就同上所述

4、引用构造器
建立在有的接口中的方法会返回一个对象,比如java.util.function.Supplier提供
了一个get方法,返回一个对象。
这时 设计一个方法 来对其调用 参数是这个接口

具体的接口:

public interface Supplier<T> {
    T get();
}

设计方法实现:

public static List getList(Supplier<List> s){
  return s.get();
}

那么调用方式有三种:

第一种匿名类:
 
Supplier<List> s = new Supplier<List>() {
	public List get() {
		return new ArrayList();//相当于实现了接口方法
	}
};
List list1 = getList(s);

以下lambda表达式可根据 匿名类的内容 化简得出

List list2=getList(()->new ArrayList());//无变量是因为该方法get是无参

因为List get() 本就是无参方法在把匿名类缩减成lambda表达式的时候按照其步骤 缩减只剩() 无参必须保留括号
如果括号里只有一个参数可以把括号去掉 两个参数则不可以

第三种写法:

List list3=getList(ArrayList::new);

强调:
只是针对某些匿名类可以缩减成lambda表达式的形式 lambda表达式的运用只是为了减少代码量 它的存在可以说是充分不必要 你觉得哪些情况下的代码可以缩减成lambda表达式 就可以尝试

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值