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://www.cnblogs.com/attilax/

Atiend

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

  1. JAVA 8 方法引用 - Method References

    什么是方法引用 简单地说,就是一个Lambda表达式.在Java 8中,我们会使用Lambda表达式创建匿名方法,但是有时候,我们的Lambda表达式可能仅仅调用一个已存在的方法,而不做任何其它事,对 ...

  2. Java 8Lambda之方法引用(Method References)

    方法引用分为4类,方法引用也受到访问控制权限的限制,可以通过在引用位置是否能够调用被引用方法来判断.具体分类信息如下: 类型 使用方式 静态方法 ContainingClass::staticMeth ...

  3. 方法引用(Method References)

    * 方法引用的使用 * * 1.使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! * * 2.方法引用,本质上就是Lambda表达式,而Lambda表达式作为函数式接口 ...

  4. java 方法引用(method reference)

    it -> it != null等价于Objects::nonNull

  5. 方法引用(Method reference)和invokedynamic指令详细分析

    方法引用(Method reference)和invokedynamic指令详细分析 invokedynamic是jvm指令集里面最复杂的一条.本文将详细分析invokedynamic指令是如何实现方 ...

  6. Java中的函数式编程(四)方法引用method reference

    写在前面 我们已经知道,lambda表达式是一个匿名函数,可以用lambda表达式来实现一个函数式接口.   很自然的,我们会想到类的方法也是函数,本质上和lambda表达式是一样的,那是否也可以用类 ...

  7. atitit.java方法属性赋值and BeanUtils 1.6.1 .copyProperty的bug

    atitit.java分配给属性值方法and BeanUtils 1.6.1 .copyProperty的bug 1. core.setProperty(o, "materialId&quo ...

  8. Java 方法引用_特性

    JAVA8 方法引用:(四种方法引用的使用) 对象引用的特点:不同的对象可以操作同一块的内容:而方法引用就是指为一个方法设置别名,相当于一个方法定义了不同的名字. 引用静态方法: 类名称 :: sta ...

  9. Lambda方法推导(method references)

    在上一篇[http://www.cnblogs.com/webor2006/p/7707281.html]中提到了方法推导的东东: 这里说细的学习一下它,下面走起! Method references ...

随机推荐

  1. 用C语言关于学生管理系统的几种实现方法(一位数组,二维数组,指针,结构体)

    一位数组: #include <stdio.h> #include<string.h> #define N 5 void luru(float s[],int n); void ...

  2. Oracle安装:64位电脑安装64位Oracle、PLSQL步骤

    步骤: 1.安装64位Oracle 2.安装64位PLSql 3.将11.2.0.win32的压缩包解压,放在Oracle的安装目录:product下 4.配置PLSQL参数: Tools -> ...

  3. SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable

    我的開發環境 框架:        springmvc+spring+freemarker 開發工具: springsource-tool-suite-2.9.0 JDK版本: 1.6.0_29 to ...

  4. eclipse/myeclipse sublime 实时更新文件改变

    情形: 在使用eclipse/myeclipse开发的时候, 像JS 或者HTML 以及一些操作时,sublime 的效率比eclipse/myeclipse要快,所以我们就可以使用这两者一起开发. ...

  5. UVA 12299 RMQ with Shifts(线段树:单点更新)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  6. slot游戏中的数学概念

    最近研究slot 算法,看了大量的英文资料,因为母语中文,一直使用中文的英文小白来说,好心塞,悔不当初没学好英文. 下文是从众多的英文中摘录的唯一能够看明白的概念.先给自己留着,到时候深入研究可以看 ...

  7. PAT/简单模拟习题集(二)

    B1018. 锤子剪刀布 (20) Discription: 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负 ...

  8. 微信公共平台开发-(.net实现)3--发送文本消息

    最近,项目这边比较忙,没来得及续写,哎,先吐吐槽吧,在这个周六还得来上班,以后每个周六多要上,一天的滋味真有点受不鸟呀.还不习惯ing... 嗯,别的不说了现在开始接着上次http://www.cnb ...

  9. 分享:根据webservice WSDL地址自动生成java调用代码及JAR包

    分享:根据webservice WSDL地址自动生成java调用代码及JAR包使用步骤:一.安装java 并配置JAVA_HOME 及 path二.安装ANT 并配置ANT_HOME三.解压WsdlT ...

  10. 【Hello CC.NET】自动化发布时 Web.config 文件维护

    在 <[Hello CC.NET]CC.NET 实现自动化集成> 的 HellowWorld 中经实现: 1.获取源码 2.编译项目 3.集成测试 4.Ftp发布项目 5.创建安装包 6. ...