首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是invokedynamic,我如何使用它?

什么是invokedynamic,我如何使用它?
EN

Stack Overflow用户
提问于 2011-07-10 10:15:53
回答 2查看 53.3K关注 0票数 175

我不断听到关于JVM中添加的所有新的很酷的特性,其中一个很酷的特性是invokedynamic。我想知道它是什么,它如何使Java中的反射编程变得更容易或更好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-10 10:23:10

它是一个新的JVM指令,它允许编译器生成代码,使用比以前更宽松的规范调用方法--如果您知道"duck typing“是什么,invokedynamic基本上允许鸭子类型。作为Java程序员,您不能使用它做太多事情;但是,如果您是工具创建者,则可以使用它来构建更灵活、更高效的基于JVM的语言。Here是一篇非常贴心的博客文章,提供了很多细节。

票数 173
EN

Stack Overflow用户

发布于 2011-07-10 12:59:33

不久前,C#在C#中添加了一个很酷的特性,即动态语法

代码语言:javascript
复制
Object obj = ...; // no static type available 
dynamic duck = obj;
duck.quack(); // or any method. no compiler checking.

可以把它看作是反射方法调用的语法糖。它可以有非常有趣的应用。请参阅http://www.infoq.com/presentations/Statically-Dynamic-Typing-Neal-Gafter

Neal Gafter负责C#的动态类型,他刚刚从SUN跳槽到了MS.,所以认为SUN内部也讨论过同样的事情并不是不合理的。

我记得在那之后不久,一些Java家伙宣布了类似的事情

代码语言:javascript
复制
InvokeDynamic duck = obj;
duck.quack(); 

不幸的是,在Java7中找不到这个特性,非常失望。对于Java程序员来说,他们没有在程序中利用invokedynamic的简单方法。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6638735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档