Groovy中警告:“getAt”无法应用于“Integer”

13

在我Groovy代码的这一行中:

def document = someQuery().Document[0]

方法 someQuery 将返回一个 Json 数组并且它可以正常工作。由于编辑器不知道属性,因此会在 Document 下划线,并在 [0] 处显示警告,内容如下:

'getAt' in 'org.codehaus.groovy.runtime.DefaultGroovyMethods' cannot be applied to '(java.lang.Integer)'

那么,避免这个警告的更好方法是什么?


尝试使用 def document = someQuery().Document 获取整个对象。 - KernelPanic
你的Groovy代码中有任何类型吗?someQuery返回什么?你设置它返回一个Map了吗? - tim_yates
我同意 tim_yates 的观点。我已经开始在从类外部使用的方法签名中定义类型,因为我经常在那里遇到动态类型问题。 - Roland
3个回答

5

对于.getAt(0).getAt(-1),你也可以分别使用.first().last(),这样Intellij就不会抱怨了。

来源:我刚试过了。(请参见getAt在此处不需要整数:代码补全

    def shortId(def longId){
        longId?.toString()?.split('[/:]')?.last()
    }

2

你可能有类似以下的代码:

def sql = //... (new/existing connection to the database)
sql.eachRow { row ->
    //Do something...
}

请将此替换为:

def sql = //... (new/existing connection to the database)
sql.eachRow { GroovyResultSet row ->
    //Do something...
}

这将强制您的编辑器查看来自GroovyResultSet的方法,而不是在Groovy编译期间附加到对象的同名方法。


0

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