在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()的原因几乎是重复的