通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比


JDK 7 将会实现JSR 292 ,为在JVM上实现动态语言提供更多支持。其中,MethodHandle 是JSR 292的重要组成部分之一。有了它,意味着Java终于有了引用方法的方式,或者用C的术语说,“函数指针”。(我差点要说“引用‘方法’的‘方法’”了,好pun)。
下面的讨论都是基于当前(2009-09)的设计而进行的,今后相关具体设计可能变化,但大的方向应该比较明确了。JDK 7的代码例子都是在JDK 7 Binary Snapshot build 70 下测试的。执行程序时要添加-XX:+EnableMethodHandles参数。

与其说JDK 7的MethodHandle像C的函数指针,还不如说像.NET的委托。
C#与.NET从1.0版开始就有“委托”的概念,通过委托可以在代码中引用任意方法,无论方法的可访问性、所属类型如何,无论是静态还是实例方法。之前一帖 也 提到了,.NET的委托提供了为方法创建“别名”的能力,使我们可以用统一的方式去调用签名相同但名字和所属类型都不一定

你可能感兴趣的:(jdk,C++,c,.net,C#)