关于Java的动态语言支持问题
最近在读《深入理解Java虚拟机》第二版。看到第8章的动态类型语言支持的时候,发现一个有趣的问题。 前言 在《深入理解java虚拟机》第二版第8章中,主要内容是介绍JVM的字节码执行过程,在讲解动态类型语言支持的时候引入了java.lang.invoke包,以下简要介绍一下java.lang.invoke: JDK 7 实现了 JSR 292 《Supporting Dynamically Typed Languages on the Java Platform》,新加入的 java.lang.invoke 包[3]是就是 JSR 292 的一个重要组成部分,这个包的主要目的是在之前单纯依靠符号引用来确定调用的目标方法这条路之外,提供一种新的动态确定目标方法的机制,称为 Method Handle。这个表达也不好懂?那不妨把 Method Handle 与 C/C++ 中的 Function Pointer,或者 C# 里面的 Delegate 类比一下。举个例子,如果我们要实现一个带谓词的排序函数,在 C/C++ 中常用做法是把谓词定义为函数,用函数指针来把谓词传递到排序方法,像这样...
