Tag: 句柄

MethodHandle – 这是关于什么的?

我正在研究JDK 1.7的新function,而我无法得到MethodHandle的devise目的? 我理解(直接)调用静态方法(以及在这种情况下直接使用Core Reflection API)。 我也理解(直接)调用虚拟方法(非静态,非最终)(以及使用需要通过Class的层次结构obj.getClass().getSuperclass() )的Core Reflection API。 非虚拟方法的调用可以视为前者的特例。 是的,我意识到超载有一个问题。 如果你想调用方法,你必须提供确切的签名。 您不能以简单的方式检查重载的方法。 但是,什么是MethodHandle呢? Reflection API允许你在没有任何预先假设的情况下(比如实现接口)“查看”对象内部。 你可以检查对象的目的。 但MethodHandle的devise是什么? 为什么和什么时候应该使用它? 更新:我正在阅读这篇http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html文章。 据此,主要目标是简化运行在JVM之上的脚本语言的生活,而不是为Java语言本身。 更新-2:我完成阅读上面的链接,从那里一些报价: JVM将成为构builddynamic语言的最佳VM,因为它已经是一个dynamic语言VM。 而通过将dynamic语言提升为一stream的JVM公民,InvokeDynamic将certificate这一点。 使用reflection来调用方法效果很好,除了一些问题。 方法对象必须从特定的types中检索,并且不能以一般的方式创build<…> 反映的调用比直接调用要慢很多。 多年来,JVM已经非常善于快速反映调用。 现代的JVM实际上在幕后产生了一堆代码,以避免大部分旧JVM处理的开销。 但简单的事实是,通过任意数量的层来反映访问总是比直接调用慢,部分原因是完全基因化的“调用”方法必须检查和重新检查接收者types,参数types,可见性和其他细节,但也因为参数必须全部是对象(所以原语获得对象框),必须提供作为一个数组,以涵盖所有可能的arities(所以参数获得数组盒)。 性能上的差异对于一个库进行一些reflection调用可能并不重要,特别是如果这些调用主要是dynamic地在内存中build立一个静态结构,可以进行正常的调用。 但是在dynamic的语言中,每次调用都必须使用这些机制,这是一个严重的性能问题。 http://blog.headius.com/2008/09/first-taste-of-invokedynamic.html 所以,对于Java程序员来说,它本质上是无用的。 我对吗? 从这个angular度来看,它只能被视为Core Reflection API的替代方式。

什么是在C + +的句柄?

我被告知句柄是一种指针,但不是,它允许你保持一个对象的引用,而不是对象本身。 什么是更详细的解释?

findWPF窗口的句柄

Windows窗体有一个属性win1.Handle,如果我记得,返回主窗口句柄的句柄? 有没有相当的方式来获得WPF窗口的句柄? 我在网上find了下面的代码, IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle; 但我不认为这会帮助我,因为我的应用程序有多个窗口。 谢谢!!

什么是Windows句柄?

在讨论Windows资源时,什么是“句柄”? 他们如何工作?