`

通过代码简单介绍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 7的MethodHandle,并与.NET的委托对比(二)

    标题中的“答复: 通过代码简单介绍JDK 7的MethodHandle,并与.NET的委托对比(二)”表明本文将深入探讨Java中的MethodHandle概念,并将其与.NET平台上的委托进行对比。MethodHandle是JDK 7引入的一个强大特性,它...

    JDK7源代码

    《深入解析JDK7源代码》 JDK7(Java Development Kit 7)是Java编程语言的一个重要版本,它的源代码对于理解Java平台的工作原理、学习面向对象编程以及提升编程技巧具有极大的价值。在这个资源中,包含了 javax、...

    jdk7源代码

    Java Development Kit(JDK)是Java编程语言的核心组件,提供了编写、编译、调试和运行Java应用程序所需的...对比JDK 7与更高版本的源代码,可以帮助开发者追踪语言的发展,理解新特性的实现原理,从而提升编程能力。

    jdk-7u191 (windows和linux)

    标题提到的"jdk-7u191"指的是JDK的第7个主要版本的第191次更新。此版本在发布时是一个重要的里程碑,因为Java 7引入了许多新特性,如动态类型、字符串inswitch、try-with-resources语句等,极大地提高了开发效率。 ...

    jdk-7u80-windows-x64.exe 【官方下载的jdk1.7、jdk7,windows 64位版】

    1. **多语言支持**:Java 7增加了对其他编程语言的支持,如Groovy、Scala等,通过JEP(JDK Enhancement Proposals)292,使得这些语言可以在Java虚拟机(JVM)上运行。 2. **try-with-resources**:这是一个语法糖...

    Java JDK 7学习笔记源代码

    《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    JDK7安装包wins.zip

    10. **模块化系统**:虽然JDK7并未完全实现模块化,但引入了Jigsaw项目的基础,为JDK8的模块化系统奠定了基础。 安装JDK7时,通常需要按照以下步骤进行: 1. 下载并解压"JDK7安装包wins.zip"。 2. 双击安装程序,...

    jdk-7-windows-x32

    **Java Development Kit (JDK) 7 for Windows 32位详解** JDK(Java Development Kit)是Oracle公司提供的用于开发和运行Java应用程序的核心工具集。JDK 7,也称为Java SE 7 (Java Standard Edition 7),是Java语言...

    jdk1.7.0_79下载jdk-7u79-windows-x64

    Java 7(又称为Java SE 7或JDK 1.7)是Java平台标准版的第七个主要版本。它于2011年发布,带来了许多新的特性和改进,包括: - **Strings in Switch语句**:允许在switch语句中直接使用字符串,提高了代码的可读性...

    jdk-7u80-linux-x64.tar.gz解压,ORACLE JDK1.7 linux x64.zip

    标签"C#"可能表明此内容与.NET框架的C#编程语言有关,但这里主要讨论的是Java的JDK。尽管C#和Java在很多方面有相似之处,它们是两种不同的编程语言,各有其特性和用途。C#通常与Microsoft的.NET平台关联,而Java则跨...

    JDK7-API-帮助文档(英文版).rar

    Java Development Kit (JDK) 7 是一个关键的软件开发平台,用于构建和运行Java应用程序。JDK7-API-帮助文档(英文版)是...通过深入阅读和理解这个文档,开发者可以更好地利用Java 7的功能,编写出高效、可靠的代码。

    jdk7u4源代码

    来自OpenJDK网站文件openjdk-7u4-fcs-src-b22-02_may_2012.zip openjdk\jdk\src\share\classes路径 JDK7u4源码2012年4月

    jdk1.1源代码

    通过研究JDK1.1的源代码,开发者可以追溯到Java语言的起源,了解其设计理念和发展脉络,同时也能对比现代Java的改进,从而更好地理解和应用现代编程实践。尽管许多特性已经过时,但它们为后续版本的Java奠定了坚实的...

    官方正版 jdk7

    2. **类型推断**:在Java 7中,编译器可以通过上下文推断变量的类型,这在使用钻石操作符(<> )创建泛型对象时尤为明显,简化了代码。 3. **Strings in switch语句**:扩展了switch语句,使其可以处理String对象,...

    Jdk7绿色版

    虽然描述中没有明确指出Jdk7绿色版包含MySQL,但是提到了“使用”,这可能意味着该版本提供了一种简便的方法来与MySQL配合,可能是通过预配置的连接驱动或其他工具。 关于JDK7的重要知识点: 1. **多线程改进**:...

    JDK 7 源码

    通过深入研究JDK 7的源码,开发者可以了解到这些特性的实现原理,从而更好地利用它们来编写高效、可靠的Java程序。同时,理解源码也有助于开发者在遇到问题时能够更快地定位和解决问题,提升自身的编程能力。

    jdk1.7 64位官方版 jdk-7u79-linux-x64.tar.gz

    6. **堆外内存访问**:通过DirectByteBuffer,可以直接在Java代码中访问操作系统分配的堆外内存,提高了处理大块数据的性能。 7. **改进的类型推断**:编译器能够更智能地推断泛型方法的类型参数。 **64位版本的...

    jdk 1.6 源代码一

    7. **国际化与本地化**:`java.text`和`java.util.locale`包处理了文本格式化和本地化需求,源代码揭示了如何根据地区设置调整日期、数字和货币的显示。 8. **网络编程**:`java.net`包包含了网络通信相关的类,如`...

    Java帮助文档 JDK全系列 官方中英下载地址.docx

    JDK是由Sun Microsystems(现已被Oracle公司收购)开发并维护的,自Java诞生以来,它一直是Java开发者的首选SDK。本文将深入探讨JDK的主要组件、功能及其不同版本的下载链接。 1. JDK的主要组件: - **javac**:...

    JDK1.7(JavaSE1.7/JDK7)

    在类型推断方面,JDK7引入了“钻石操作符”(),使得在创建泛型对象时,编译器能够自动推断类型,减少了代码中的冗余。例如,`List<String> list = new ArrayList();` 这样的写法在JDK7中成为可能。 JDK7还增强了...

Global site tag (gtag.js) - Google Analytics