Intellij idea 带有整数键的Groovy映射-';getAt';在DefaultGroovyMethods中不能应用于(java.lang.Integer)
我刚刚开始练习Groovy,我有一个关于地图和IDE的问题 当我尝试使用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,
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 = [:]