【问题标题】:Under what circumstances does Groovy use AbstractConcurrentMap?Groovy 在什么情况下使用 AbstractConcurrentMap?
【发布时间】:2009-11-19 23:48:29
【问题描述】:
(具体来说,org.codehaus.groovy.util.AbstractConcurrentMap)
在对混合 Java/Groovy 的应用程序进行一些分析时,我看到很多对 AbstractConcurrentMap 类的引用,但在代码库中没有一个是明确的。当以 groovy 动态 def myMap = [:] 样式实例化地图时,groovy 是否使用此类?当 groovy 选择使用它而不是 java.util.HashMap 时,是否有规则?
有没有人比较两者的性能信息?我粗略的“眼球检查”说 AbstractConcurrentMap 似乎要慢得多 - 有人知道我是否正确吗?
【问题讨论】:
标签:
java
performance
groovy
map
【解决方案1】:
随意吐槽:Groovy 的 API javadoc 似乎很糟糕(没有描述这个抽象类是什么和/或什么)。
但据我所知,至少有 2 个类扩展了这个抽象类。
org.codehaus.groovy.reflection.MixinInMetaClass
org.codehaus.groovy.reflection.ClassInfo$ClassInfoSet
两者(您可以从包名中猜到)都必须对 Groovy 中的反射代码做一些事情。所以我想象 Groovy 为一些内部的东西实例化这个抽象类的实现(例如,作为你对 java/groovy 映射的使用)
顺便说一句。 ClassInfo 类(包含 ClassInfoSet)上的 javadoc 简洁地声明
处理我们想要的所有信息
继续上课
我猜这仅对作者“Alex.Tkachman -”有意义
【解决方案2】:
在 Groovy 版本 1.6.3 中,如下:
println [:].getClass()
打印
类 java.util.LinkedHashMap
这表明 LinkedHashMap 是用于文字映射的 Map 实现。