您的位置:首页 > Web前端

Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针

2016-10-08 13:59 609 查看
Atitit java方法引用(Method
References)
与c#委托与脚本语言js的函数指针

1.1.
java方法引用(Method References) 与c#委托与脚本语言js的函数指针这几个概念是类似的,1

1.2.
java方法引用(Method References) 方法引用分为4类1

1.3.
范例3

1.1. java方法引用(Method
References)
与c#委托与脚本语言js的函数指针这几个概念是类似的,

C#委托本质是函书接口,js是duck type原理。

1.2. java方法引用(Method
References)
方法引用分为4类

方法引用的唯一用途是支持Lambda表达式的简写,不用Lambda表达式,就用不着方法引用

方法引用分为4类,常用的是前三种。方法引用也受到访问控制权限的限制,可以通过在引用位置是否能够调用被引用方法来判断。具体分类信息如下:

·

引用静态方法

ContainingClass::staticMethodName

例子: String::valueOf,对应的Lambda:(s) -> String.valueOf(s)

比较容易理解,和静态方法调用相比,只是把.换为::

·

·

引用特定对象的实例方法

containingObject::instanceMethodName

例子: x::toString,对应的Lambda:() -> this.toString()

与引用静态方法相比,都换为实例的而已

·

·

引用构造函数

ClassName::new

例子: String::new,对应的Lambda:() -> new String()

构造函数本质上是静态方法,只是方法名字比较特殊。

·

·

引用特定类型的任意对象的实例方法

ContainingType::methodName

例子: String::toString,对应的Lambda:(s) -> s.toString()

太难以理解了。难以理解的东西,也难以维护。建议还是不要用该种方法引用。

实例方法要通过对象来调用,方法引用对应Lambda,Lambda的第一个参数会成为调用实例方法的对象。

·

1.3. 范例

/**

* 静态方法当作另外一个静态方法

*
@param args

*/

public static void main(String[]
args) {

test( class1::method2);

}

private static void test(
Runnable object) {

object.run();

}

private static void method2()
{

System.out.println("aa");

}

Ref参考资料

JDK1.8新特性之方法引用(Method References) -
走马行酒醴,驱车布鱼肉 -
博客频道 - CSDN.NET.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax
Atiend
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐