类型提示可以大大改善反射发生多次的执行时间。我对类型提示的理解是,它只允许编译器缓存反射查找。该缓存是否可以动态地发生?或者是否有某些原因会导致这种情况不好/不可能?Clojure中的Java反射可以被记忆吗?
4
A
回答
6
这些警告表明,Clojure的有没有办法知道 C的类型。你可以提供一个类型提示解决此问题,使用元数据的语法
^Class
:
(defn describe-class [#^Class c]
{:name (.getName c)
:final (java.lang.reflect.Modifier/isFinal (.getModifiers c))})
有了类型提示,反射警告将消失。编译的Clojure代码将与编译的Java代码完全相同。 此外,尝试使用除类 以外的其他名称调用describe-class将失败并出现ClassCastException。
所以总结一下,反射投射不仅仅是缓存它被消除。
3
丰富还跟赐教: “对于JDK适当真正的答案是JSR 292,在invokedynamic
指令,它允许调用点缓存的正常结构与性能要好得多 比memoizaton”
相关问题
- 1. java中的记忆游戏
- 2. 每个USB记忆棒可以变成可启动的USB吗?
- 3. Java:'终身'记忆和permgen一样吗?
- 4. Winform程序如此简单 - 但我可以回忆我的记忆吗?
- 5. 我如何标记一个Clojure函数,以便我可以用Java反射识别它
- 6. 记忆化在Java中
- 7. 我可以在Clojure记录中创建可变状态吗?
- 8. 请教我记忆“斜杠”与“反斜杠”的好记忆
- 9. Java:自动记忆
- 10. 我可以使用java反射API更改类成员吗?
- 11. 记忆游戏的Java
- 12. Java中的反射
- 13. 可以在实现可分段接口的对象上使用java反射吗?
- 14. F#会自动记忆吗?
- 15. Java Swing中的冲突记忆
- 16. 反射可以提取特征中使用的初始值吗?
- 17. 基本记忆游戏Java
- 18. 可以做一些关于“Item”反射类的可见性吗?
- 19. 有人可以解释我的记忆池中有什么问题吗?
- 20. 可以通过Java反射在Spring中更改Annotated Tractional属性吗?
- 21. Haskell中的记忆?
- 22. C++中的记忆
- 23. 我可以在clojure 1.2 master分支中使用swank-clojure吗?
- 24. Java的Swing真的是一个“记忆猪”吗?
- 25. 我可以使用反射发现Java类声明的内部类吗?
- 26. 反应:是否需要手动记忆?
- 27. 从记录模式映射Clojure中
- 28. 在java中的反射
- 29. 在java中的反射?
- 30. 在硒中的java反射
感谢您纠正我对错误理解类型提示的工作方式。我仍然觉得关于缓存反射的更大问题没有得到答复,但是会接受这一点,即尽可能不要直截了当。 – 2009-09-28 06:57:16