Java 8之方法引用(Method References)
来源:互联网 发布:美国mac电磁阀 编辑:程序博客网 时间:2024/06/05 11:00
Java 8中方法也是一种对象,可以By名字来引用。不过方法引用的唯一用途是支持Lambda的简写,使用方法名称来表示Lambda。不能通过方法引用来获得诸如方法签名的相关信息。
方法引用的分类
方法引用分为4类,常用的是前两种。方法引用也受到访问控制权限的限制,可以通过在引用位置是否能够调用被引用方法来判断。具体分类信息如下:
引用静态方法
ContainingClass::staticMethodName
例子: String::valueOf,对应的Lambda:(s) -> String.valueOf(s)
比较容易理解,和静态方法调用相比,只是把.换为::引用特定对象的实例方法
containingObject::instanceMethodName
例子: x::toString,对应的Lambda:() -> this.toString()
与引用静态方法相比,都换为实例的而已引用特定类型的任意对象的实例方法
ContainingType::methodName
例子: String::toString,对应的Lambda:(s) -> s.toString()
太难以理解了。难以理解的东西,也难以维护。建议还是不要用该种方法引用。
实例方法要通过对象来调用,方法引用对应Lambda,Lambda的第一个参数会成为调用实例方法的对象。引用构造函数
ClassName::new
例子: String::new,对应的Lambda:() -> new String()
构造函数本质上是静态方法,只是方法名字比较特殊。
方法引用的例子
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
结语
方法引用仅仅是Lambda的配套服务,主要目的是通过名字来获得Lambda,重复利用已有的方法。
- Java 8之方法引用(Method References)
- Java 8之方法引用(Method References)
- JDK1.8新特性之方法引用(Method References)
- Java8 方法引用-Method References
- [Java]“语法糖”系列(一)之方法引用(Method References)
- Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
- java Lambda expressions Method References
- Method References
- 引用 References
- 引用( References )
- Velocity语法强化3之References(引用)
- Java 8 官方教程翻译——方法引用(method reference)
- JDK8的随笔(04)_Lambda表达式扩展之Method References
- java8 - 方法引用(method referrance)
- java8 - 方法引用(method referrance)
- 引用(References)
- 学习C++ -> 引用( References )
- 始于足下 c++ references 引用
- 30分钟学会如何使用shiro
- 统计学习方法 第5章 决策树(2)
- CSS——图片精灵(Image Sprites)
- 目标文件里面到底有什么(1)?
- dotdotdot.js 中文特殊字符
- Java 8之方法引用(Method References)
- 从15天到2天,让你的销售预测编制时间缩短80%
- PostgreSQL 介绍和安装(一)
- java中如何在eclipse里查看一个接口的所有实现类或一个类的子父级关系?
- OkHttp拦截器(简译)
- 双向链表
- 揭秘命名函数表达式
- maven系列之一maven安装和与IDE集成
- iPhone Xcode打包支持的SDK包文件