【问题标题】: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 实现。

      【讨论】:

        猜你喜欢
        • 2016-12-22
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 2017-11-30
        • 1970-01-01
        • 2014-01-25
        • 2011-07-08
        • 2011-03-28
        相关资源
        最近更新 更多