代码之家  ›  专栏  ›  技术社区  ›  ken

解析groovy映射类

  •  7
  • ken  · 技术社区  · 14 年前

    任何人都可以解释为什么在调用[:].getClass()时在映射上调用[:].class返回空值,而返回预期的结果映射。见下面的例子

    1

    ["test",[test:"test"],23].each {     
      println it.class 
    }
    class java.lang.String
    null
    class java.lang.Integer
    

    2

    ["test",[test:"test"],23].each {     
      println it.getClass()
    }
    class java.lang.String
    class java.util.LinkedHashMap
    class java.lang.Integer
    

    1 回复  |  直到 14 年前
        1
  •  11
  •   hvgotcodes    14 年前

    这是答案

    http://jira.codehaus.org/browse/GROOVY-1824

    编辑--当然。我认为地图的语义是这样的,如果你有

    def m = [one:1, two:2]
    

    你应该能够像这样访问地图中的条目

    m.one
    

    换句话说,访问地图就像在地图对象上获取属性一样。如果

    m.class 
    

    返回类,它将破坏这些语义,因为“class”不是程序员添加到映射中的键。

    这就是我收集到的……