Groovy:getClass方法对map literal返回null



在Groovy中,我经常在代码中使用map字面符号,并且很好奇它是map的具体实现。

在尝试了一些事情之后,这个脚本最好地说明了我的困惑:

def map = ["A":"B"]
println map // I assume this avoids any lazy evaluation of the map
println map instanceof HashMap // I tried some other impls too
println map.class

并接收此输出:

[A:B]
true
null

这告诉我映射显然是一个HashMap,但getClass方法不想告诉我这一点。

所以我的问题是:为什么getClass返回null,有没有更合适的方法从Groovy中获取运行时类信息?

您需要使用

map.getClass()

与其他情况一样,它正在寻找一个名为class 的密钥

与groovy.class返回的值不同于.getClass()的原因几乎是重复的

最新更新