Intellij idea 带有整数键的Groovy映射-';getAt';在DefaultGroovyMethods中不能应用于(java.lang.Integer)

Intellij idea 带有整数键的Groovy映射-';getAt';在DefaultGroovyMethods中不能应用于(java.lang.Integer),intellij-idea,groovy,Intellij Idea,Groovy,我刚刚开始练习Groovy,我有一个关于地图和IDE的问题 当我尝试使用Integer作为地图的键时,为什么IDEA会显示下面的通知?这个简单的Groovy脚本工作良好,可以打印正确的结果 这是因为IntelliJ IDEA将map变量视为Object——如果变量前面缺少静态类型或关键字def,IDEA似乎不遵循类型推断。如果查看DefaultGroovyMethods,您将看到只有一种方法getAt用于对象类型: public static Object getAt(Object self,

我刚刚开始练习Groovy,我有一个关于地图和IDE的问题

当我尝试使用
Integer
作为地图的键时,为什么IDEA会显示下面的通知?这个简单的Groovy脚本工作良好,可以打印正确的结果


这是因为IntelliJ IDEA将
map
变量视为
Object
——如果变量前面缺少静态类型或关键字
def
,IDEA似乎不遵循类型推断。如果查看
DefaultGroovyMethods
,您将看到只有一种方法
getAt
用于
对象
类型:

public static Object getAt(Object self, String property) {
    return InvokerHelper.getProperty(self, property);
}
这就是IDEA警告您缺少方法
getAt(对象自身,整数属性)
的原因,因为它不知道
map
实际上是
map
而不是
对象

请遵循Groovy的官方指导原则,即:

可以使用变量的类型(如
String
)或关键字
def
)来定义变量:

String x
def o

资料来源:

如果将变量定义为

def map = [:]

IntelliJ不再抱怨了

没有圆括号吗<代码>映射[它]
@daggett是。我刚查过
def map = [:]