Groovy: map字面值上的getClass方法返回null。

7

在Groovy中,我经常使用映射文字表达式,并且很好奇它具体实现了哪个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获取运行时类信息?
1个回答

9

您需要使用

map.getClass()

否则它会寻找一个名为“class”的键。 几乎是这个问题的复制。关于Groovy的.class返回不同值的原因。

啊,我忘了Groovy也可以将其解释为映射键。谢谢! - Kirie
2
#GroovyPuzzlers,S01。 - JBaruch
1
有时我会想,为什么社区不团结起来抵制脚本语言呢?这是我学习Groovy以来遇到的第30个“问题”,如果我想要跟上Gradle的步伐,我几乎必须学习它。每个人都声称脚本语言可以提高生产力。这是对现实的嘲弄吗?虽然JavaScript朝着强类型和面向对象的方向发展,但基于JVM的语言却朝相反的方向发展。历史在重演。 - Martin Andersson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接